git常用指令

164 阅读3分钟

创建本地分支

git branch 分支名

例如:git branch dev,这条命令是基于当前分支创建的本地分支,假设当前分支是master(远程分支),则是基于master分支创建的本地分支dev。

删除本地分支(必须保证不在删除的分支上,才能进行删除)

 git branch -d dev 

切换到本地分支

git checkout 分支名 

例如:git checkout dev,这条命令表示从当前master分支切换到dev分支。

创建本地分支并切换

git checkout -b 分支名 

例如:git checkout -b dev,这条命令把创建本地分支和切换到该分支的功能结合起来了,即基于当前分支master创建本地分支dev并切换到该分支下。

提交本地分支到远程仓库

git push origin 本地分支名

例如: git push origin dev ,这条命令表示把本地dev分支提交到远程仓库,即创建了远程分支dev。

删除远程分支

git push --delete origin dev

首次推送本地分支到远程

git push --set-upstream origin 本地分支名

本地分支关联远程分支

git branch --set-upstream-to=origin/远程分支名 本地分支名

查看远程分支

git branch -a

Git修改本地或远程分支名称

注:修改远程分支先拉下来再进行以下步骤

  • 旧分支:oldBranch
  • 新分支:newBranch

步骤:

  1. 先将本地分支重命名
git branch -m oldBranch newBranch
  1. 删除远程分支(远端无此分支则跳过该步骤)
git push --delete origin oldBranch
  1. 将重命名后的分支推到远端
git push origin newBranch
  1. 把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newBranch

参考文章: juejin.cn/post/684490…

cherry-pick

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。

这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。

$ git cherry-pick <commitHash>

举例来说,代码仓库有master和feature两个分支。

a - b - c - d   Master
         \
           e - f - g Feature

现在将提交f应用到master分支。

# 切换到 master 分支
$ git checkout master

# Cherry pick 操作
$ git cherry-pick f

git正确的删除远程仓库的文件并用.gitignore忽略提交此文件

git rm -r --cached target
git commit -m "delete target/"
git push origin master

先删除暂存区的文件,然后提交,下一步就是编辑.gitignore文件,添加忽略

将本地已有的一个项目上传到新建的git仓库的方法

先将本地的项目初始化为一个git仓库,然后再强行合并本地仓库和远程仓库,由于这两个仓库是完全不同的两个仓库,所以直接pull都会报错,需要在pull的时候假加上–allow-unrelated-histories才可以pull成功。此方法适用于本地项目已经是一个git仓库的情况

  1. 将本地仓库与远程仓库关联起来;
  2. pull远程仓库的内容,更新本地仓库,使用–allow-unrelated-histories忽略本地仓库和远程仓库的无关性,强行合并(关键);
  3. 把本地仓库的内容push到远程仓库;
git remote add origin git@github.com:yuanmingchen/tensorflow_study.git
git pull origin master --allow-unrelated-histories
git push -u origin master

本地仓库已经关联了远程仓库,再和心仓库关联时,会报fatal: remote origin already exists,此时要先取消关联

 git remote rm origin

拉取远程分支到本地

 git checkout -b 本地分支名 origin/远程分支名