@ltlovezh
2018-10-10T09:08:36.000000Z
字数 3253
阅读 1068
git
因为项目中一直使用Svn作为版本控制工具,接触Git的机会不多,所以每次使用,都要去查询命令,这里记录下一些常用的Git命令,方便查询。
从阮一峰老师的博客中看到一幅关于Git命令的图片,感觉很赞!
完整的命令是:
git clone -o <远程仓库名> <版本库地址> <本地目录名>
该命令会从远程主机克隆一个版本库,默认远程仓库名为origin
,但是我们可以通过-o
参数指定想要的仓库名。
默认情况下,通过clone方法仅仅克隆了远程仓库的master分支,若我们想克隆远程仓库的其他分支,可以通过:
git checkout -b <本地分支名> <远程仓库名>/<远程分支名>
表示在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致。
git remote命令主要用于管理远程仓库。
git remote : 列出所有远程仓库名
git remote -v : 同时列出远程仓库的地址
git remote show <远程仓库名> : 查看远程仓库的详细信息
git remote add <远程仓库名> <远程仓库地址> : 添加远程仓库
git remote rm <远程仓库名> : 删除已有的远程仓库
git remote rename <原远程仓库名> <新远程仓库名> : 修改远程仓库名
git remote set-url --push [远程仓库名] [newServerUrl] : 修改远程仓库的地址
完整的命令是:
git pull <远程仓库> <远程分支名>:<本地分支名>
表示把远程仓库某个分支的更新拉取到本地,然后和本地分支合并(merge)
若省略本地分支名,则表示拉取下来的远程分支和当前分支合并。
例如:
git pull origin dev
该命令表示拉取origin/dev
分支,然后与当前分支合并。实际上,这等同于先做git fetch
,再做git merge
。
在Git中,可以在远程分支和本地分支之间建立一种追踪关系(tracking)。例如:执行git clone
的时候,默认所有本地分支与远程仓库的同名分支,自动建立这种追踪关系。即:本地的master分支自动"追踪origin/master
分支。
当然,我们也可以手动建立追踪关系:
git branch --set-upstream <本地分支名> <远程仓库/<远程分支名>
如果本地分支和远程分支已经建立了追踪关系,那么git pull就可以省略远程分支名了,即:
git pull origin
该命令表示,本地的当前分支自动与对应的origin远程仓库的追踪分支(remote-tracking branch)进行合并。
若当前分支只有一个追踪分支,那么连远程仓库名都可以省了。即:
git pull
完整的命令是:
git push <远程仓库> <本地分支名>:<远程分支名>
表示把本地分支的更新,推送到远程仓库的某个远程分支。
若省略远程分支名,则表示把本地分支的更新推送到与本地分支同名的远程分支,若远程仓库不存在和本地分支同名的分支,则会创建该远程分支。
git push origin dev
该命令表示把本地dev分支推动到origin仓库的dev分支,如果后者不存在,则会被创建。
若省略了本地分支名,则表示删除指定的远程分支,这等同于推送一个空的本地分支到远程分支。即:
git push origin :dev
git push origin --delete dev
//这两者都表示删除origin仓库dev分支
若远程仓库存在和本地分支同名的分支,那么可以省略本地分支名,即:
git push origin
该命令表示把本地分支推动到origin仓库同名的分支。
若本地仓库仅关联了一个远程仓库,那么连远程仓库名都可以省略。
最后,git push不会推送标签(tag),除非使用--tags选项,即:
git push origin --tags
完整的命令是:
git fetch <远程仓库名> <远程分支名>
表示取回远程仓库某个分支的更新到本地,与git pull不同,取回的远程分支的更新不会影响到本地代码。
若省略远程分支名,则表示取回远程仓库所有分支的更新。取回的远程分支,在本地通过 <远程仓库名>/<远程分支名>来访问。
例如:把取回的远程分支合并到本地当前分支:
git merge origin/dev
该命令表示把origin仓库的dev分支合并到当前本地分支。
可见git fetch
+git merge
正好完成了git pull
的工作。
一般情况下,我们fork一个仓库后,需要经常从原仓库同步最新的代码过来,这里记录下同步一个fork的步骤:
git remote add <远端仓库名> https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
git fetch <远端仓库名>
git merge <远端仓库名>/<远端分支名>
git push <fork的远程仓库名> [远端分支名]
完整命令:
git config [--global] key value
其中--global
可以省略,若省略则表示配置只对当前仓库起作用,否则则对所有仓库起作用。
仓库配置文件位置: 本地仓库地址/.git/config文件
全局配置文件位置:~/.gitconfig文件
例如:
//配置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
//配置别名 git st == git status
git config --global alias.st status