一、add的回退操作
当我们有时候运行 add . 之后,发现自己的分支不对,需要进行撤销操作,这时候使用git reset HEAD,即可以把暂存区的修改取消掉,这时看你的代码,依然是修改后的状态,等待你重新提交。
二、利用缓存区切换分支提交
上一篇我们说了Git提交代码的流程,但是有时候我们发现我们想把代码提交到另外一个远端的分支上,你在A 分支做的修改,你想把修改提交到B分支上,这时候不能直接切换分支,需要将你做的修改存储起来,切换分支后提取出来,在提交合并:
1、git stash --将本地代码暂存到栈中 (git stash list --查看栈中的内容)
2、切换分支 (git checkout 分支名)
3、git stash pop --恢复栈中的代码到本地
4、然后在新分支进行提交合并
5、当然提交合并完成后需要清空栈中的缓存 (git stash drop --清空栈)
-----(查看分支 git branch 与 git branch -a )
三、使代码回到任意一个commit ID
git reset commitID (可以查看历史的提交找到提交ID,有些文件名的变动与文件夹的变动无法变动需要手动删除)
四、我们刚提交了代码,但是发现这些代码需要提交到另一个分支上面
可以用git cherry-pick commitID 来操作
1、立即使用git log命令查看刚刚提交的commitID
2、然后切换到想再次提交的分支上面,运行git cherry-pick命令来提交到新分支上,再次之前可以更新一下保证分支最新代码
3、这种操作和stash pop有异曲同工之处,stash pop是未提交时候使用,然而这种是commit之后来操。(git stash缓存有时间限制)
以下是我们提交代码的流程图:
五、fork代码,有时候我们一套代码要给两个不同的部门开发,两个部门之间的代码是两套独立的git,但是代码是一样的
有时候我们在A部门开发的代码,需要同步到B部门,则需要将A的代码fork到B中,一下是具体操作
1、切换到B部门的git仓库中(相应项目的相应分支上(例如item服务的release分支)),运行git remote -v 可以看到有一个远端库(这个origin远端库就是你每次将代码push到的地方,现在我们需要一个远端的库来将远端的代码拉倒你本地,也就是拉倒你的B仓库中)
2、运行git remote add upstream 【注意此处要写上A项目的git仓库地址】
3、此刻再运行git remote -v你可以看到多了一个远端库,不过这个库看起来稍微有点不同,是以upstream开头
4、然后运行git fetch upstream 将A的提交拉倒B中
5、然后运行git rebase upstream/release 将拉过来的提交与你本地的release代码合并
6、然后运行git push origin release 将合并后最新的release代码push到远端 (当然你需要有将代码push到远端release的权限)