git基本命令

1.初始化仓库:git init

2.添加到暂存区:git add <file>

3.提交到仓库:git commit -m <msg>

4.查看仓库状态:git status

(1)git status -s: 查看仓库的简短状态,可能会得出以下显示:

文件前两个字符分别表示暂存区状态、工作区状态。

??表示文件未跟踪。

第一个M表示文件暂存区已修改(modify),第二个M表示文件在工作区中已修改但未add到暂存区,两个M表示文件修改add到暂存区后,又在工作区中修改过,即工作区、暂存区、仓库中的文件都不相同。

第一个A表示一个新添加的文件add到了暂存区,但未提交到仓库;AM表示这个新添加的文件add到了暂存区,但又在工作区中做出了修改。

5.查看提交记录:git log

(1)git log --pretty=oneline:单行显示提交记录。

6.git diff <file>:比较文件在两个区之间的差异,后面不加<file>则比较所有有修改的文件。

(1)git diff <file>:比较工作区与暂存区;

(2)git diff --cached:比较暂存区与仓库;

(3)git diff HEAD:比较仓库与工作区。

7.git reset:版本回退,其本质是改变“分支游标”的指向。

(1)git reset <commit> -- <file>:不改变“分支游标”的指向,仅用指定commit的file覆盖到暂存区里。<commit>缺省值为HEAD。因此,git reset -- <file> = git reset HEAD -- file,即撤销文件在暂存区的修改。

(2)git reset --soft/mixed/hard <commit>:没有指定reset的文件,即重置到commit版本,因此“分支游标”发生改变,相当于废弃了commit之后的版本。<commit>缺省值是HEAD。soft指仅重置仓库,mixed为缺省值,指重置暂存区和仓库,hard指重置工作区、暂存区、仓库。

8.git checkout:检出命令,本质改变HEAD的指向。

(1)git checkout <commit> -- <file>:不改变HEAD指向,仅用指定commit的file覆盖到工作区。<commit>缺省值是暂存区的file。因此,git checkout -- <file>相当于在工作区修改未add到暂存区时撤销工作区中文件的修改。

(2)git checkout <branch>:改变HEAD指向,HEAD指向到<branch>,<branch>缺省值是HEAD。其实这里也可以git checkout <commit>,但是这样会出现“分离式指针”。所以checkout命令一般只用作切换分支用。

(3)分离式指针:即HEAD不是指向一个branch,而是指向了一个具体的commit。

9.reset与checkout的区别

后面跟file:

(1)reset将文件覆盖到暂存区,checkout将文件覆盖到工作区;

(2)reset --  file的commit缺省值是HEAD,checkout -- file的则是暂存区;

后面不跟file:

(1)reset改变“分支游标”指向,checkout改变HEAD指向;

(2)两者缺省值都是HEAD。

10.git rm <file>:删除仓库中的file。

当我们在工作区中删除某个文件后,实际上文件还保留在仓库中。当我们确定真的不需要这个文件,可用git rm将删除操作记录到暂存区,就像跟踪新文件用git add一样,然后还要git commit提交。如果我们误删了某个工作区中的文件,可用git checkout -- <file>用暂存区的文件覆盖到工作区中。

11.分支管理

(1)git branch:查看分支情况;git branch -v:查看分支情况以及显示各分支游标指向的commit;

(2)git branch <branch_name>:在当前HEAD创建分支;

(3)git checkout <branch>:切换到指定分支;

(4)git checkout -b <branch>:相当于(2)(3)的简写;

(5)git checjout -d <branch>:删除指定分支;

12.git merge <branch>:将指定的分支合并到当前分支;

13.标签管理

(1)git tag:查看标签;

(2)git tag xxx <commit>:给指定commit打标签,缺省值是HEAD;

(3)git tag -d xxx:删除指定标签。

14.git与远程库

(1)创建ssh key:ssh-keygen -t -rsa;

(2)关联远程库:git remote add origin <url>,origin是远程库的标识符(名称);

(3)git push origin master:将指定分支指向的commit推送到远程库;

(4)从远程库克隆:git clone <url>。

15.全局设定

(1)设置邮箱与用户名,用于每次提交的记录:

git config --global user.name ""

git config --global user.email ""

(2)git config --global alias.st status

设置命令别名。如上设置后,查看仓库命令变为git st。其他常见命令别名还有:

commit --> ci

checkout --> co

branch --> br

具体参考:

1.《git权威指南》(强烈推荐);

2.《gitbook》(git官方文档)。

原文地址:https://www.cnblogs.com/lqxing1994/p/9288327.html