Git常用命令及常用操作总结

文章参考:http://blog.csdn.net/charlene0824/article/details/52189320 

Git是一种分布式的版本控制系统,是现在开发者的必备技能。使用Git已经有一段时间了,在这里总结一下Git的常用命令以及常用操作 
先上图(盗图自Git远程操作详解) 
Git常用命令及常用操作总结_第1张图片

Git常用命令

git init : 在当前目录新建一个Git代码库
git clone:下载一个项目和它的整个代码历史
git config: 设置文件
git add:将工作区内容添加到暂存区(`git add .`表示将工作区所有内容添加到暂存区)
git rm:删除工作区文件,并且将这次删除放入暂存区

git commit -m: 提交暂存区到仓库区
git commit [files1] [files2]-m:提交暂存区的指定文件夹到仓库区
git commita :提交工作区自上次commit之后的变化,直到仓库区
git commitv:提交是显示所有diff信息

git branch:列出所有本地分支
git branchr:列出所有远程分支
git brancha:列出所有本地分支和远程分支
git branch [branch-name]:新建一个分支,但依然停留在当前分支
git checkoutb [branch]:新建一个分支,并切换到该分支
git branch [branch] [commit]:新建一个分支,指向指定commit
git branchtrack [branch] [remote-branch]:新建一个分支,与指定的远程分支建立追踪关系
git checkout [branch-name]:切换到指定分支,并更新工作区
git checkout -:切换到上一个分支
git merge [branch]:合并指定分支到当前分支
git cherrypick [commit]:选择一个commit,合并当前分支
git branchd [branch-name]:删除分支
git push origindelete [branch-name]:删除远程分支

git status:显示有变更的文件(可以查看有冲突的文件)
git log:显示当前分支的版本历史
git logstat:显示commit历史,以及每次commit发生变更的文件
git logS [keyword] :搜索提交的历史 根据关键字
git log [tag] HEADgrep feature:显示某个commit之后的所有变动
git logfollow [file]:显示某个文件的版本历史,包括文件改名
git logp [file]:显示指定文件相关的每一次diff
git shortlogsn:显示所有提交过的用户,按提交顺序排序
git diff:显示暂存区和工作区的差异
git diffcached [file]:显示暂存区和上一个commit的差异
git show [commit]: 显示某次提交的元数据和内容变化

git fetch [remote]:下载远程仓库的所有变动
git rematev:显示所有远程仓库
git remote show [remote]:显示某个远程仓库的信息
git remote add [shortname] [url]:增加一个新的远程仓库
git pull [remote] [branch]:取回远程仓库的变化,并与本地分支合并
git push [remote] [branch]:上传本地指定分支到远程仓库
git push [remote]force:强行推送当前分支到远程仓库
git push [remote]all:推送所有分支到远程仓库

git checkout [file]:恢复暂存区的指定文件到工作区
git checkout :恢复暂存区的所有文件到工作区
git reset [file]:重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
git resethard:重置暂存区与工作区,与上一次commit保持一致
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

如何将本地内容上传到远程仓库

使用的命令及使用顺序

git add . //添加到暂存区
git status  //查看状态
git commit -m '任意描述'  //提交到本地仓库
git status
git push //上传到远程仓库
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

小Tips : git status 是查看当前状态的,不是必须操作。但是通过git status 不仅可以知道当前的状态,它也提示你下一步操作。所以,如果不知道如何操作你的Git,不妨试一下这个命令

当使用Git时,我们在执行git命令的目录称为工作区。我们通常使用git init 命令后后会发现该目录下多了.git 的文件夹(有时是隐藏的文件夹),该文件夹下的区域即为版本库。通过git add 命令会将工作区的文件或文件夹复制到版本库中的暂存区,通过git commit 命令会将暂存区的内容提交到本地仓库 ,通过git push 命令可以将本地仓库的内容上传到远程仓库(如github)。

如何操作分支

git checkout -b [branch-name] //创建分支并指向该分支
git branch //查看分支
git add/git commit/git push origin [branch-name] //将分支上传到远程仓库的操作
git checkout master  //指向主分支
git branch  //查看分支
git merge [branch-name] // 将分支合并到主分支上
git branch -d [branch-name]  //删除分支
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里需要说明一下,在每次提交的时候,Git都把提交串成一条时间线,这条时间线就是一个分支,即主分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用head指向master,就能确定当前分支以及当前分支的提交点 
Git常用命令及常用操作总结_第2张图片 
当创建新的分支的时候(比如分支名为dev),Git新建了一个指针叫dev,指向master相同的提交,再把head指向dev,就表示当前分支在dev上 
Git常用命令及常用操作总结_第3张图片

从现在开始,对工作区的修改和提交就是针对dev分支了,当新的提交生成后,dev的指针往前移一步,而master指针就不变。 
当在dev上的工作完成后,就可以把dev合并到master上。即直接把master指向dev的当前提交,所以合并分支就是改变了一下指针 
Git常用命令及常用操作总结_第4张图片 
合并完分支后,删除dev分支,删除分支的过程就是把dev指针删掉的过程,这样最后还是只剩下master分支 
Git常用命令及常用操作总结_第5张图片 
(上述四个图均来自廖雪峰 Git教程)

如何处理文件冲突问题

当多人协作完成同一个项目的时候,很容易出现两个人同时修改一个文件的情况。这事,如果一个人上传对A文件的操作之后,另一个人在执行git push命令上传对A的操作时就会出现冲突。常用的解决冲突的方法是先将远程仓库通过git pull 拉取到本地并合并。如果有冲突,在冲突文件中会通过如下方法进行标示。

<<<<<<< HEAD 
Creating a new branch is quick & simple. //别人的修改 
======= 
Creating a new branch is quick AND simple. //你的修改 
>>>>>>> origin

可以通过该表示将文件进行修改,比如我们将文件修改为 
Creating a new branch is quick AND simple. 
这时再运行git push 就可以提交到远程仓库

冲突一般会出现在多人开发同一个项目中。多人协作的工作模式通常是这样:

首先,可以试图用git push origin branch-name推送自己的修改;

如果推送失败,则因为远程分支已经更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name

Git还有很多需要学习的东西,现在先总结这么多。等以后遇到什么问题,再继续补充

参考文献:Git远程操作详解 
廖雪峰 Git教程

你可能感兴趣的:(git,Git)