Linux822思享实验室视频编码学习之路

Git - 分支间更新、同步与提交小技巧

2018-06-18  本文已影响28人  团不慌

1 Fork 仓库更新

Fork 后经过一段时间容易落后原仓库一些提交,这时需要更新Fork仓库进行同步。

添加原仓库命名为ori,并拉取:

$ git remote add ori https://github.com/xxx/Oriremote.git
$ git fetch ori

进行合并并push到master分支上:

$ git checkout master
$ git merge ori/master
$ git push origin master

查看Fork仓库的commit,已经更新为原仓库的最新状态。

2 分支同步

如果是在Fork之后新建分支进行修改,则需将master更新同步到新的分支上。

2.1 直接合并,分支消失

$ git checkout master
$ git merge develop
$ git push

将develop分支合并到master分支

2.2 保持分支,只做更新

$ git checkout develop
$ git rebase master
$ git push --force

将master新增的commit补充到develop之前,再把develop的commit补充上。rebase本质是cherry-pick,最后可以强制提交,或者提交一个merge信息。

3 修改commit信息

3.1 还未push的commit

push之前很容易进行各种修改,包括message甚至是文件内容:

$ git commit --amend

可以在修改文件内容后使用amend,或者直接使用并修改message。修改完成后使用Ctrl+O保存,Ctrl+X退出。

3.2 已经push的commit

对于已经提交的commit,可以使用rebase(变基)进行更改:

$ git log
$ git rebase -i <hash-code-of-a-commit-log>

rebase会将最新提交到当前变基位置的commit列出,并提供以下选择:

# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit

可以根据需要更改commit前的状态,只更改message可选择reword,合并commit可选择squash...

需要注意的是更改时会分离出新的头指针,更改结束后除了使用 --continue 回到原基址外还要合并头指针,如果更改内容涉及到文件可能需要merge,之更改message可以直接合并:

$ git reset HEAD <hash-code-of-the-latest-commit>

后续push即可,视情况选择添加--force参数。

上一篇 下一篇

猜你喜欢

热点阅读