一、基本语法:
1、列出所有分支和当前代码所在的分支:git branch 回车 (当前所在分支前会有*表示)
2、切分支: git checkout XXX 回车(XXX是已有分支名)
3、创建一个新的分支: git checkout -b XXX 回车 (XXX是自己新起的分支名)
4、选择要提交的代码: git add XXX 回车(XXX是要提交的文件相对路径)
5、将代码提到暂存区: git commit -m "XXX" 回车 (XXX是提交时显示的注释)
6、发起merge request :git push origin XXX 回车(XXX是要合并进去的分支名)
7、rebase代码:git rebase XXX 回车(XXX是要rebase的代码)
8、删除本地分支:git branch -d XXX 回车(XXX是要删除的本地分支)
9、删除远程分支:git push origin --delete XXX 回车(XXX是要删除的远程分支)
10、删除远程提交:git reset --hard XXX 回车 (XXX是要删除代码的提交号)
11、git删除文件夹及文件夹下的所有文件:git rm XXX -r -f 回车(XXX是要删除的文件夹)
二、具体使用场景:
1、当我们写的代码需要别人codereview之后再入到主干的时候,我们就需要发起merge request
例如我们的主干是develop分支,那我们写代码之前要切到develop分支,并且拉develop的最新代码:
git checkout develop
git pull 当前我们的分支为develop,并且是最新代码了,接着写代码
写完代码(改了文件a.python、b.python)之后我们要新建一个分支(例如hongwei_chestyle_fix),然后发起merge request:
git checkout -b hongwei_chestyle_fix
git status (显示我们改过哪些文件)
git add a.python b.python (如果status显示的只有a.python,我们这里可以直接写 git add . ;但是有的时候我们编译之后会生成一些文件,如果用git add . 会把编译生成的文件也提交上去,所以最好一个文件一个文件的添加)
git commit -m "修改bug"
git push origin hongwei_chestyle_fix
这样,我们就完成了新改的代码入到develop的merge request ,在git网页上可以看到我们提交的新merge request,然后点击merge后,我们的代码就入到develop里面了
2、我们要入分支到develop分支,但是发现代码并不是基于develop写的 ,这时我们需要rebase下
先将代码新建个分支:
git checkout -b hongwei_test
然后保证本地develop是最新代码
git checkout develop
git pull origin develop
然后切回新代码分支,进行rebase:
git checkout hongwei_test
git rebase develop
这样我们的代码就rebase了develop的代码 ,可能我们现在写的代码与develop原有的代码有一些冲突,这时需要我们在代码中标红的文件中看冲突的标记,进行解冲突,留下我们想要的代码部分
其他:
git stash 保存当前的工作进度。会分别对暂存区和工作区的状态进行保存
git stash pop 如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作进度列表中清除。
git revert 和 git reset的区别 :
1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
2. git revert是用一次逆向的commit“中和”之前的提交,因此合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,所以和老的branch再次merge时,这些被回滚的commit应该还会被引入。
3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容