git fetch 拉取远程所有分支的最新的提交
git pull 拉取当前分支
git pull 拉取当前分支后会自动merge(远端与本地merge)
git fetch 不会自动merge,需要手动去merge(远端与本地)
在feature分支通过git rebase master,将master分支上的多个变化,同步到fearure分支,并且将master分支的变化置于feature分支的变化之前,将feature分支的变化置于之后,再删除**git push origin --delete branch_a**,这样可以直接git push feature的内容,然后切到master,执行git merge feature。这样不会出现交叉线。
另一种方法,是先把master上的一系列提交先merge到feature上,然后再把新的feature分支merge到master上去,这样就会出现交叉线。
这两种都避免不了冲突conflicts, 有conflicts都得手动解决。
当两人在同一分支工作,使用**git pull --rebase**操作,使得自己的代码始终位于最上面。
当a,b两个分支都在开发,则单独测试a时,先通过git rebase master,然后测试A,通过后合码到master,上线。后来,当b要测试时,也先git rebase master,这样b里面就有了a,同样测试通过后再合码到maser,上线。
如果要同时测试a和b, 先将a和b在master的同一个点进行rebase,然后把a合到b上或者b合到a上,开始测试。
如果git push时,远端分支已经变了,可以重新push到一个新的远端分支,使用:
git push origin feature_old:
// 放弃单个文件修改,注意不要忘记中间的"--",不写就成了检出分支了!
git checkout -- filepathname
// 放弃所有的文件修改
git checkout .
可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所有的缓存可以使用 git reset HEAD . 命令。
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。
可以使用 git reset --hard HEAD^来回退到上一次commit的状态。
此命令可以用来回退到任意版本:git reset --hard commitid
你可以使用 **git log **命令来查看git的提交历史。git log 的输出如下,之一这里可以看到第一行就是 commitid。
git reset --soft HEAD~1 撤回最近一次的commit(撤销commit,不撤销git add)或者git reset --soft HEAD^
git reset --mixed HEAD~1 撤回最近一次的commit(撤销commit,撤销git add)
如果进行两次的commit,想要都撤回,可以使用HEAD~2
–soft
不删除工作空间的改动代码 ,撤销commit,不撤销git add file
–hard
删除工作空间的改动代码,撤销commit且撤销add
另外一点,如果commit注释写错了,先要改一下注释,有其他方法也能实现,如:
git commit --amend
这时候会进入vim编辑器,修改完成你要的注释后保存即可
有时候报错git xxx is not a git command,是因为git版本落户不支持这个git命令,需要升级git版本,如下:
https://blog.csdn.net/Scirhh/article/details/83820261