Git使用总结

 ssh-keygen -t rsa -b 4096 -C "xxx@exmaple.com"

生成ssh密钥对,然后将~/.ssh/id_rsa/id_rsa.pub复制到github的ssh key管理的地方即可。

 

git add

1、将文件添加到暂存区,文件会由untracked变为tracked状态 。

2、如果之前某个文件已经git add了,但是没有进行commit操作,那么修改文件后,执行git add会将上次git add的文件覆盖。

 

 git commit -m 描述

提交暂存区的文件到版本库中,并增加描述

 

 git commit -a -m 描述

1、只要git add一次之后,只要之后每次文件一改动,不用git add ,直接git commit -a 就会将这些新改动的文件全部commit,自带add。

2、从来没有经过git add的文件,不会被添加到版本库

 

git rm filename

同时删除版本库(注意不是暂存区)和工作目录的文件,但是不会删除历史记录,可以回到删除文件之前。

对没有提交到版本库中的文件(没有commit过),使用此命令是无效的。

如果不使用此命令,那么就要使用 如下命令完成同样的功能

rm file  && git add file && git commit file

然后才将文件从两个地方删除

 

git rm --cached file

1、将一个已暂存的文件转化为未暂存的,tracked=>untracked

2、将一个已经提交到版本库的文件从版本库中删除,但是将其保留在工作目录

等价于 git reset HEAD file && git checkout -- file

 

git checkout head -- file

如果执行了git rm命令,将版本库和工作目录的文件删除了,可以使用该命令将文件恢复

恢复之后该文件的状态是已添加进版本库

 

git mv fileName newName

同时移动两个地方的文件(版本库和工作目录)

等同于 mv fileName newName && git rm fileName && git add newName

移动之后,要使用commit提交修改

 

git log -n -p commit_id或者引用

 输出commit_id或者引用 所指的 那次提交的 n条log

 

 git log master~A..master~B

输出master分支,倒数第A次,到倒数第B次提交之间的提交日志,".."表示区间范围

 

 git branch

查看当前版本库中的所有分支

 

 git branch newBranchName [start_commit]

省略start_commit时,默认以当前的分支的最新commit为基准,创建一个新分支。

 

 git checkout branchName

从当前分支切换到其他已创建的分支(branchName所指的分支)

 

git checkout -b newBranch

以当前的分支的最新commit为基准,创建一个新分支,并且切换到新的分支。

如果当前分支有文件修改后(一个被commit过的文件,现在又做了一些修改,但是没有commit提交这点修改),执行这条命令之后,所做的修改会直接成为新分支的中modified文件,在新分支中add之后commit,然后就成功新分支的一部分,并且在原分支中所做的修改会被抛弃。

 

git checkout -m otherBranch

如果想要将在本分支中所做的改动不提交到本分支,而是提交到另外一个分支,并且切换到另一个分支。

使用这个命令之后,在原分支中的所做的改变都会变成另一条分支的内容,所以原分支中所做的改动将会被丢弃。

 

使用git checkout时,要注意

1、如果当前分支的工作目录中某个文件从来没有commit过,哪怕是add了,那么切换到其他分支的时候,该文件仍旧保持原状态。如果是add过,那么现在commit,那么这个文件就会成为新分支的一部分,而原分支就不会出现该文件了。

2、如果当前分支的工作目录中的某个文件被commit过,但是现在对其做了一点修改,导致其状态变为modified,如果不先commit,一旦发起checkout到其他分支,就会abort,如果加-f选项强制切换分支,那么该文件在原分支中的所做的改变就会被丢弃。所以在切换到其他分支前,尽量进行commit,将在本分支中做的改动提交到分支中。

3、如果有其他情况,可以参考上一条命令,git checkout -m otherBranch

 

 git show dev:index.php

显示分支名称为dev下的index

 

 git branch -d dev

删除分支名称为dev的分支。

注意

1、删除的分支不能使当前分支,只能是除当前分支以外的分支。

2、删除的分支如果没有合入当前分支,也就是说要删除的分支最新的提交之后,没有合入到本分支,那么执行这条命令会失败的

3、如果要强制删除一条没有何如本分支的分支,可以将-d选项改为-D即可。

 

git diff

比较文件或者目录的差异,包括以下两点

1、一个文件commit了之后,做了一些修改,没有add,也没有commit,那么执行此命令就会显示 当前工作目录中的文件和版本库中的文件差异。

2、一个文件commit了之后,做了一些修改,执行了add,但没有commit,然后又对该文件做了一些修改,此时执行命令,显示的就是当前工作目录中的文件和暂存区中该文件的差异。

 

git diff commit_id

显示当前工作目录 和 指定commit_id的那次提交之间的差异

注意:是当前工作目录和给定提交之间的差异,并不是暂存区或者版本库  和  给定提交之间的差异。

 

git diff --cached commit_id

显示暂存区中某个文件 指定提交的差异,commit_id可以省略,省略的话,默认为HEAD,也就是当前分支的最新提交。

 

git diff commit_id_1  commit_id_2

显示两次提交之间的差异,会忽略当前工作目录中和暂存区中文件的差异。

 

 git diff HEAD

显示当前工作目录 和 暂存区中的文件差异。

 

git merge dev

将分支名称为dev

 

git clone git_url [repos_Name]

克隆一个远程的版本库,git库的地址是git_url,后面的repos_name是版本库下载完之后的文件夹名称。

repos_name可以省略,省略之后,默认是以版本库的名称命名文件夹。

 

git clone --bare git_url [repos_name.git]

创建权威版本库,权威版本库的名称是repos_name.git,可省略。

权威版本库和普通版本库的区别:

1、权威版本库没有工作目录,只包含普通版本库中的.git文件夹里面的内容。

2、普通版本库中有工作目录,不仅包含.git目录,还包含工作目录中的文件。

 

git config user.name 'test'

设置当前版本库的配置信息,该配置信息会保存在.git/config文件中,可以通过  cat .git/config  来查看。

 

 git config --list 或者 -l

显示当前版本库的配置信息(注意包含全局配置和当前版本库配置)。

 

git config --global user.name 'test'

git config --global user.email 'test@demo.com'

设置git全局配置

 

git config --global --list

查看git的全局配置项。

这些配置项是使用 git config --global 来设置的配置项。

 

git pull xxx dev 

从xxx版本库中的dev分支的内容拉取下来,用来更新当前的本地分支

 

git push xxx dev

将版本库中的当前分支的内容提交到xxx版本库的dev分支。

 

git remote add xxx url

git pull 和 git push后面的xxx可以使用下面这条命令添加

其实xxx就是url的别名而已

 

 

 

以上内容整理自《Git 版本控制管理》

posted @ 2018-03-02 22:23  寻觅beyond  阅读(308)  评论(0编辑  收藏  举报
返回顶部