转自 | AI有道 作者 | echozh
链接 | https://juejin.im/post/5d5b4c6951882569eb57095
前置条件
本地分支和远程分支
git checkout branch xxx
建立的分支,远程分支是我们经过 git push -u origin xxxx
推到 git 服务器的分支,在我们推送之后,git 会帮我们在本地建立一个以 orgin/
开头的分支,这个我们也叫远程分支。origin/xxx
,origin/xxx
就是远程的 git 服务器在我们本地建立的一个分支的对照版本(我觉得这样说应该比较容易理解),我们日常的 git fetch --all
就是将本地的 origin/xxx 与 git 服务器的 origin/xxx 分支进行同步。Commit id
使用指南
创建分支
git checkout branch xxx
来创建一个新分支,这个很容易理解,但是如果我们现在在分支 branch-1,但是我们想新建一个基于远程 master 最新版本的分支,我们该怎么办呢,不能说现在我回到 master,然后 git pull
拉取最新的 master 分支代码,然后创建分支,很繁琐对不对。git fetch --all
记得我们上面提到的吧,同步远程分支代码, --all
可以改成 origin/master
,然后进行 git checkout branch xxx origin/master
后面的 origin/master
代表我们是基于远程分支 origin/master 进行创建的。追加提交记录
git commit --amend
对上一次的提交记录进行追加。git push
会提示你版本不一致不允许提交,当然如果你可以保证提交没有错误,且这一个分支只有你自己一个人玩,那你就可以使用 git push -f
进行强制提交了,这个操作很危险,谨慎使用。merge 还是 rebase
git rebase origin/master
了,这个操作会将你在这个分支的提交附加于最新的 master 分支版本之后,很明显这个操作之后你当前本地的 branch-a 和远程的 origin/branch-a
已经不一样了,所以有一个缺点就是你只能选择 git push -f
进行提交。origin/master
分支有冲突,嗯,这个时候你也可以使用 git rebase origin/master
这个操作来解决冲突,并同步最新的 master 的代码。git pull --rebase
,其实 git pull
命令后面是有一个默认参数的那就是 --merge,会给我们刚接触 git 的同学造成很多麻烦。所以在这 git pull --rebase
是一个不错的选择。rebase 的另外一个骚操作:合并 commit
git rebase -i HEAD~X x
代表从当前的提交记录往回回溯的提交记录的个数,执行这个操作之后我们就可以看到一个这样的交互界面:commit message
填写的界面:commit message
,这个可自行发挥,然后还是保存退出即可。然后我们使用 git log
就可以看到一个新的提交记录:git cherry-pick
git cherry-pick b-commit-id
将 branch-b 分支的提交记录拿过来了git checkout xxx file
这个操作可以将其他分支的文件拉取到当前分支,注意这个操作是覆盖式的,也就是如果你这个分支的这个文件已将存在,那么这个操作将会覆盖你当前分支的这个文件。可以发挥一下 xxx 也可以是远程分支。git checkout branch -- file
git prune
git prune
删除的是你本地 .git 下的 object 目录下,没有被使用到的 hash 值,我理解的是它会删除 origin/xx 开头的没有用到的分支,这个分支在你的远程的 git 服务器中已经删除但是本地任然存在 origin/xxx 的映射,这个时候你就可以使用 git prune
来删除本地的 origin/xxx 的映射。git branch -D XXX
,在这附上一条我们部门自己写的一个清除本地无用分支的 shell git fetch --all --prune && git branch -vv | grep gone | awk '{ print $1 }' | grep -v pit | xargs git branch -D
。git stash
git stash
可以帮助我们来暂存一些更改,我推荐的是如果只是少部分的更改,使用 stash 是可以的,多了的话,推荐新建分支来保存更改,以免自己忘记了哪个 stash。那我们该如何取出这些更改呢,最常用的就是 git stash pop
它会将你最新一次的 stash 从一个缓存数组里面推出来,这样的话如果我们操作不当很可能就丢失了这些更改。git stash apply
,这个会将你最新一次的 stash 从缓存数组里面 copy 一个副本返还给你,缺点就是,你本地的 stash 数组会越来越大,当然,你可以定时清空一下。还有一个场景,如果我想取出指定的 stash 该怎么办呢,在这我们可以使用 git stash list 来查看一下自己本地的 stash 记录的形式:git stash pop/apply stashid
来取出指定的 stash。后记
<section style="margin-right: 8px;margin-left: 8px;white-space: normal;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-align: center;widows: 1;line-height: 1.75em;"><strong><span style="letter-spacing: 0.5px;font-size: 14px;"><strong style="font-size: 16px;letter-spacing: 0.544px;"><span style="letter-spacing: 0.5px;">—</span></strong>完<strong style="font-size: 16px;letter-spacing: 0.544px;"><span style="letter-spacing: 0.5px;font-size: 14px;"><strong style="font-size: 16px;letter-spacing: 0.544px;"><span style="letter-spacing: 0.5px;">—</span></strong></span></strong></span></strong></section><section style="white-space: normal;font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;text-align: center;widows: 1;color: rgb(255, 97, 149);"><section powered-by="xiumi.us"><section style="margin-top: 15px;margin-bottom: 25px;opacity: 0.8;"><section><section style="letter-spacing: 0.544px;"><section powered-by="xiumi.us"><section style="margin-top: 15px;margin-bottom: 25px;opacity: 0.8;"><section><section style="margin-right: 8px;margin-bottom: 15px;margin-left: 8px;padding-right: 0em;padding-left: 0em;color: rgb(127, 127, 127);font-family: sans-serif;font-size: 12px;line-height: 25.5938px;letter-spacing: 3px;"><span style="color: rgb(0, 0, 0);"><strong><span style="font-size: 16px;font-family: 微软雅黑;caret-color: red;">为您推荐</span></strong></span></section><p style="margin-right: 8px;margin-bottom: 5px;margin-left: 8px;padding-right: 0em;padding-left: 0em;min-height: 1em;color: rgb(127, 127, 127);font-family: sans-serif;font-size: 12px;line-height: 1.75em;letter-spacing: 0px;"><span style="font-size: 14px;">猎户座α</span><span style="font-size: 14px;">:</span><span style="font-size: 14px;">AI玩转「吃鸡」游戏</span><br /></p><p style="margin-right: 8px;margin-bottom: 5px;margin-left: 8px;padding-right: 0em;padding-left: 0em;min-height: 1em;color: rgb(127, 127, 127);font-family: sans-serif;font-size: 12px;line-height: 1.75em;letter-spacing: 0px;">网传饶毅举报多位学者论文造假?官方回应了<br /></p><p style="margin-right: 8px;margin-bottom: 5px;margin-left: 8px;padding-right: 0em;padding-left: 0em;min-height: 1em;color: rgb(127, 127, 127);font-family: sans-serif;font-size: 12px;line-height: 1.75em;letter-spacing: 0px;">阿里如何抗住90秒100亿?看这篇你就明白了!<br /></p><p style="margin-right: 8px;margin-bottom: 5px;margin-left: 8px;padding-right: 0em;padding-left: 0em;min-height: 1em;color: rgb(127, 127, 127);font-family: sans-serif;font-size: 12px;line-height: 1.75em;letter-spacing: 0px;">深度学习必懂的13种概率分布<br /></p><p style="margin-right: 8px;margin-bottom: 5px;margin-left: 8px;padding-right: 0em;padding-left: 0em;min-height: 1em;color: rgb(127, 127, 127);font-family: sans-serif;font-size: 12px;line-height: 1.75em;letter-spacing: 0px;">担心美国政府限制,Github考虑在华设立子公司<br /></p></section></section></section></section></section></section></section></section>
本篇文章来源于: 深度学习这件小事
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
内容反馈