Git命令总结
本文是参照思否上的一篇文章,原文地址请点击https://segmentfault.com/a/1190000015676846。
文中记录了大部分与git有关操作,文章中的截图是在iterm2上进行,方便对一些命令行加深记忆。
一、git remote
为远程仓库指定别名,以便于管理远程主机,默认只有一个时为origin。
1、查看主机名: git remote
。
2、查看主机名和网址: git remote -v
。
默认克隆远程仓库到本地时,远程主机为origin,如需指定别名可使用 git clone -o <别名> <远程git地址>
。
3、查看主机的详细信息: git remote show <主机名>
。比如说:git remote show origin
。
4、添加远程主机: git remote add <主机名> <网址>
。
5、删除远程主机: git remote rm <主机名>
。
6、修改远程主机的别名: git remote rename <原主机名> <新主机名>
。
二、git fetch
将某个远程主机的更新,全部/分支 取回本地(此时只更新了Repository)它取回的代码对你本地的开发代码没有影响,如需彻底更新需合并或使用 git pull
。
远程主机的更新,全部取回本地: git fetch <远程主机名>
将远程仓库特定分支更新到本地: git fetch <远程主机名> <分支名>
三、git pull
拉取远程主机某分支的更新,再与本地的指定分支合并(相当与fetch加上了合并分支功能的操作)。
拉取远程某分支并与本地某一分支合并(没有则默认会创建): git pull <远程主机名> <远程分支名>:<本地分支名>
。
如果远程分支是与当前所在分支合并,则冒号后面的部分可以省略: git pull <远程主机名> <远程分支名>
。
如果当前分支与远程分支存在追踪关系,则可以省略远程分支名: git pull <远程主机名>
。
如果当前分支只有一个追踪分支,则远程主机名都可以省略: git pull
。
四、git push
将本地分支的更新,推送到远程主机,其命令格式与 git pull
相似。
1、将本地分支推送到远程分支: git push <远程主机名> <本地分支名>:<远程分支名>
。
2、如果省略远程分支名,则默认为将本地分支推送到与之关联的远程分支:(一般设置本地分支和与之关联的远程分支同名,防止混淆) git push <远程主机名> <本地分支名>
。
如果对应的远程分支不存在,则会被创建(m默认与本地分支同名)。
3、如果省略本地分支名,则表示删除指定的远程分支,这等同于推送一个空的本地分支到对应远程分支: git push origin:<远程分支>
等同于 git push origin--delete <远程分支>
。
4、如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略 git push origin
。
5、如果当前分支只有一个追踪分支,那么主机名也可以省略: git push
。
6、如果当前分支与多个主机存在追踪关系(使用场景相对来说较少),可以使用 -u 指定默认推送主机: git push -u origin <主机名>
,设置时候需推送便可以直接使用 git push
。
7、将本地的所有分支都推送到远程主机: git push--all origin
。
8、如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做 git pull合并差异,然后再推送到远程主机。如果一定要推送,可以使用 --force
选项(谨慎使用,除非你非常确认): git push--force origin
。
注意:分支推送顺序的格式为<来源地>:<目的地>,所以 git pull格式:<远程分支>:<本地分支>, git push格式为:<本地分支>:<远程分支>。
五、分支操作
1、创建本地分支: git branch test
:(创建名为test的本地分支)。
2、切换分支: git checkout test
:(切换到test分支)。
3、创建并切换分支 git branch -b test
:(相当于以上两条命令的合并)。
4、查看本地分支: git branch
。
5、查看远程仓库所有分支: git branch -a
。
6、删除本地分支: git branch -d test
:(删除本地test分支)。
7、分支合并: git merge master
:(将master分支合并到当前分支)。
8、本地分支重命名: git branch -m oldName newName
。
9、远程分支重命名:
重命名远程分支对应的本地分支: git branch -m oldName newName
;
删除远程分支: git push--deleteorigin oldName
;
上传新命名的本地分支: git push origin newName
;
把修改后的本地分支与远程分支关联: git branch--set-upstream-to origin/newName
10、分支关联:
查看当前的本地分支与远程分支的关联关系: git branch -vv
。
11、分支差异查看:
查看本地当前分支与远程某一分支的差异: git diff
。下面就是截取的差异的一部分。
六、修改撤销
1、 git checkout--<文件名>
:丢弃工作区的修改,就是让这个文件回到最近一次 git commit
或 git add
时的状态。
2、 git reset HEAD<文件名>
:把暂存区的修改撤销掉(unstage),重新放回工作区。
3、 git reset--hard commit_id
:git版本回退,回退到特定的commit_id版本。
流程: git log
查看提交历史,以便确定要回退到哪个版本(commit 之后的即为ID)。下图是通过git log
进行查看提交历史。
4、 git reset--hard commit_id
:回退到commit_id版本。
5、 git reflog
查看命令历史,以便确定要回到未来的哪个版本。更新远程代码到本地:
git fetch origin master
(分支)。git pull
// 将fetch下来的代码pull到本地。git diff master origin/master
// 查看本地分支代码和远程仓库的差异。
七、配置
1、 git config -l
// 陈列出所有的git配置项。下图是某项目里所有的配置项。
2、 git config core.ignorecasefalse
//配置git不忽略大小写(默认忽略)。
总结
总的来说,git的出现是方便管理项目代码,尤其是多人协作。而且现在流行的IDE早早就高度支持git操作,所以大部分情况下,我都是在webstorm里进行git操作,很少使用到命令行。但这也不影响我们去学习基本的git操作。以上~