远程仓库相关命令

检出仓库:$git@192.168.1.102:yaoxiabing/saltstack.git查看远程仓库:$gitremote-v添加远程仓库:$gitremoteadd[name][url]删除远程仓库:$gitremoterm[name]修改远程仓库:$gitremoteset-url--push[name][newUrl]拉取远程仓库:$gitpull[remoteName][localBranchName]推送远程仓库:$gitpush[remoteName][localBranchName]

分支(branch)操作相关命令

查看本地分支:$gitbranch查看远程分支:$gitbranch-r创建本地分支:$gitbranch[name]----注意新分支创建后不会自动切换为当前分支切换分支:$gitcheckout[name]创建新分支并立即切换到新分支:$gitcheckout-b[name]删除分支:$gitbranch-d[name]-----d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项合并分支:$gitmerge[name]----将名称为[name]的分支与当前分支合并创建远程分支:$gitpushorigin[name]删除远程分支:$gitpushorigin:heads/[name]或$gitpushorigin:[name]如:[root@centos7saltstack]#gitpushorigin--delete123#删除远程分支

发现有人总结得不错,就直接引用了。http://blog.chinaunix.net/uid-9398085-id-3164754.html


标签(tag)操作相关命令

创建远程标签:$gitpushorigin标签名删除远程标签:$gitpushorigin:refs/tags/标签名列出标签:$gittag-l删除本地标签:$gittag-d标签名


example1 : 把本地的某个分支origin2提交到远程仓库,并作为远程仓库的master分支,或者作为名叫123的分支

[root@centos7saltstack]#gitbranchorigin2#创建一个本地分支origin2[root@centos7saltstack]#gitpushoriginorigin2:123#提交本地origin2分支作为远程的123分支[root@centos7saltstack]#gitpushoriginorigin2:master#提交本地origin2分支作为远程的master分支

example2: 删除不对应远程分支的本地分支

[root@centos7saltstack]#gitfetch-p#在fetch之后删除掉没有与远程分支对应的本地分支-p:是prune修剪的意思


example3: 手误rm删除本地仓库的某个文件,使用git checkout -- <file>可以恢复

[root@centos7saltstack]#lltotal24drwxr-xr-x4rootroot37Oct3023:27config-rw-r--r--1rootroot555Oct3023:27config.ini-rw-r--r--1rootroot13157Oct3023:27fabfile.py-rw-r--r--1rootroot38Oct3023:31READMEdrwxr-xr-x4rootroot37Oct3023:27template[root@centos7saltstack]#rmREADME-f[root@centos7saltstack]#lltotal20drwxr-xr-x4rootroot37Oct3023:27config-rw-r--r--1rootroot555Oct3023:27config.ini-rw-r--r--1rootroot13157Oct3023:27fabfile.pydrwxr-xr-x4rootroot37Oct3023:27template[root@centos7saltstack]#gitcheckout--README[root@centos7saltstack]#lltotal24drwxr-xr-x4rootroot37Oct3023:27config-rw-r--r--1rootroot555Oct3023:27config.ini-rw-r--r--1rootroot13157Oct3023:27fabfile.py-rw-r--r--1rootroot38Oct3023:35READMEdrwxr-xr-x4rootroot37Oct3023:27template


example4: 使用rm(没使用git rm)删除某个文件,git commit -a强制提交

[root@centos7saltstack]#lsconfigconfig.inifabfile.pyREADMEtemplate[root@centos7saltstack]#[root@centos7saltstack]#[root@centos7saltstack]#rmREADME-f[root@centos7saltstack]#gitcommit-a-m"fortest"[root@centos7saltstack]#gitpush[root@centos7saltstack]#lltotal20drwxr-xr-x4rootroot37Oct3023:27config-rw-r--r--1rootroot555Oct3023:27config.ini-rw-r--r--1rootroot13157Oct3023:27fabfile.pydrwxr-xr-x4rootroot37Oct3023:27template


example5:使用git rm -rf强制删除某个目录后,使用git reset回退。

gitreset[--hard|soft|mixed|merge|keep][commit或HEAD],根据--soft--mixed--hard,会对workingdirectory、index、HEAD进行重置。A).--hard:除了“Untrackedfiles”,其他变更都被重置。即:重设index和workingdirectory,自从commit以来在workingdirectory和index中的任何改变都被丢弃,并把HEAD指向commit。B).--soft:这个模式的效果是,执行完毕后,自从commit以来的所有改变都会显示在gitstatus的"Changestobecommitted"中,当然,还有“Untrackedfiles”。即:恢复commit以来的index和workingdirectory内容。即:notcommitedC).--mixed:这个模式是默认模式。这个模式的效果是,自从commit以来的修改都会被保留,但会被标记成"Changesnotstagedforcommit"。即:仅重置index,文件修改被转移到workingdirectory中。即:notadded(来自某大神的博客:http://lingxiankong.github.io/blog/2014/07/18/git-notes/)


example6: 如何判断分支tracking了没?

git的tracking就是把来源和目标绑定在一起,tracking只能一对一。gitpush-uoriginmaster这时所在的分支就已经trackingtoorigin/master了,-u就是这个用处。查看.git/config配置文件也可以看出来[branch"master"]remote=originmerge=refs/heads/master#有这个表示是有tracking的,tracking实质其实就是pull的merge动作来源

查看提交日志相关命令

[root@centos7saltstack]#gitblametest.txt#查看test.txt这个文件中内容每一行提交的作者,最后的提交时间[root@centos7saltstack]#gitlog#查看仓库提交记录,有几个常用选项--oneline:一行显示每个commit的提交哈希值和提交信息--graph:在显示内容左边绘制一张分支拓扑图--all:显示所有分支--name-status:简洁的日志信息,以及修改了哪些文件-5:显示5个commit记录


git高级命令使用见:http://www.infoq.com/cn/news/2016/01/12-git-advanced-commands

参考链接:http://zengrong.net/post/1746.htm