Git 常用指令

Posted Chauncy_Cheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git 常用指令相关的知识,希望对你有一定的参考价值。

android开发中,代码管理是必不可少的,即使有些时候是敏捷开发,或者是小demo也需要通过代码管理工具来进行管理,这样对于任何的修改都能够一目了然。虽然现在不管是Git还是SVN都有比较方便图形化操作界面,但是感觉还是命令行能更好的理解其管理的核心。

这里仅列出一些平时工作中用的比较多的Git命令,记录下来,避免忘记。

目录

1.Git回退命令

2.git stash的使用

3.解决提交冲突

4.检出(checkout与origin)

5.合并分支修改(cherry- pick)

6.分支记录(branch)

7.生成patch

8.打入patch


1.Git回退命令

回退到指定版本git reset --hard 版本序列号
撤回上一次的提交,保留提交前的代码git reset --soft HEAD~1
撤回上一次文件添加,保留原来修改git reset HEAD .

2.git stash的使用

分支压栈(保存现有修改)git stash
分支出栈(还原修改信息)git stash pop <stash id>
显示修改内容git stash show <stash id>
显示具体区别

git stash show -p <stash id>

清除某一条压栈记录git stash drop <stash id>
清除所有的压栈修改git stash clear

3.解决提交冲突

拉取最新代码git pull <remote branch>    (显示有冲突)
当前修改压栈git stash
查看保存标记git stash list        (stash@0)
再次拉取更新git pull <remote branch>
合并冲突代码,并解决冲突git stash pop 0(或者 stash@0)
清除压栈信息git stash drop 0 或者 git stash clear(清除所有)

4.检出(checkout与origin)

切换分支

git checkout <branch name>

拉取分支具体文件git checkout <branch name> <file path>

拉取一个本地不存在的远程分支到本地

(本地自动创建并关联,自动切换过去)

git checkout -b origin/远程分支名

(如果失败,先执行一次git fetch)

创建分支并切换到该分支git checkout -b <branch name>

将本地分支push到远程分支

本地分支名:远程分支名

git push origin debug:debug

推送一个空分支到远程分支debug

相当于删除远程分支

git push origin :debug
删除远程分支debuggit push origin --delete debug
如果远程分支不存在,上传到一个新的远程分支debuggit push --set-upstream origin debug

5.合并分支修改(cherry- pick)

指定合入任何一条不在HEAD分支上

的一次提交记录

git cherry-pick 版本序列号
继续更新查看合并情况git cherry-pick --continue
取消这次更新git cherry-pick --abort
整理排序多条提交记录git rebase -i 多条提交记录

6.分支记录(branch)

查看本地所有分支和最近一次提交记录git branch -v
查看远程所有分支和最近一次提交记录git branch -r
查看所有分支(本地和远程)git branch -a

7.生成patch

成最近一次commit的patchgit format-patch HEAD^
生成最近两次commit的patchgit format-patch HEAD^^

生成两个commit间的修改的patch

(包含两个commit. <r1>和<r2>都是具体的commit号)

git format-patch <r1>..<r2/>
生成单个commit的patchgit format-patch -1 <r1>
生成某commit以来的修改patch(不包含该commit)git format-patch <r1>
生成从根到r1提交的所有patchgit format-patch --root <r1>

8.打入patch

查看patch的情况git apply --stat 0001-limit-log-function.patch
检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上git apply --check 0001-limit-log-function.patch
将名字为0001-limit-log-function.patch的patch打上git am 0001-limit-log-function.patch
添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者git am --signoff 0001-limit-log-function.patch
将路径~/patch-set/*.patch按先后顺序打上git am ~/patch-set/*.patch
当git am失败时,用以将已经在am过程中打上的patch废弃掉(比如有三个patch,打到第三个patch时有冲突,那么这条命令就把打上的前面两条patch丢弃掉,返回没有打patch的状态)git am --abort
当git am失败,解决完冲突之后,这条命令会接着打patch 合入一个patch包git am --resolved

(注:git apply是另外一种打patch的命令,其与git am的区别是,git apply并不会将commit message等打上去,打完patch后需要重新git add和git commit,而git am会直接将patch的所有信息打上去,而且不用重新git add和git commit,author也是patch的author而不是打patch的人)

这些命令都是可以配合使用的,比如: 在/app目录下 git am .patch文件  打入一个patch文件,然后git reset HEAD~1 取消patch中的提交,然后就可以进行本地编辑了。

再如:合并两条stash ,首先出栈第一条记录git stash pop 0 ,然后进行提交git add . ,git commit -m "提交信息" ,再出栈第二条记录,git stash pop 1 ,git add . ,最后撤销第一条记录的提交:git reset --soft HEAD^ , 此时两次的stash就已经合并了。

暂时想到的用得比较多的就是这些,后面也会持续更新和补充,好记性不如烂笔头。

以上是关于Git 常用指令的主要内容,如果未能解决你的问题,请参考以下文章

大白话说GIT常用操作,常用指令git操作大全

Git常用指令总结

git常用指令学习

git 常用指令

git常用指令汇总

git/github常用指令入门