Git使用备忘

来源:互联网 发布:免费刷趣头条金币软件 编辑:程序博客网 时间:2024/05/17 07:33

一、Git的配置


        /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。

 

        ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。

 

        当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所.git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

 

        1、设置用户信息

    $ git config --globaluser.name  “fatedier”

    $ git config --global user.email example@example.com

    $ git config --global core.editor vim

 

        2、设置差异分析工具

    $ git config --global merge.tool vimdiff

 

        3、如何获取帮助文档

    $ git help<verb>

    $ git <verb> --help

    $ man git-<verb>

 

        例如man git-config

 

二、Git基础操作


1、取得Git仓库(从现有仓库克隆)


        $ git clone https://github.com/schacon/fatest.git

 

        这个命令会在当前目录下创建一个fatest的目录,其中的.git目录保存所有的版本记录。fatest下是项目的所有文件。

 

        如果要自定义目录名称,可以在末尾指定,例如:


        $ git clone https://github.com/schacon/fatest.gitfatestnew


        现在创建的目录就是fatestnew而不是fatest了,其他的都一样。

 

2、检查当前项目文件状态


        $ git status

 

        可以看到有哪些文件是没有加入到版本中的,哪些是修改了还没提交的等等。

 

3、将新文件加入到版本中


        $ git add test.cpp

 

        注:git add命令对于不同状态的文件有不同的效果,可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。

 

        注意修改过后的文件处于未暂存状态,提交的时候处于未暂存状态的文件将不会提交,需要使用git add命令更改为暂存状态,之后再提交就会提交到仓库中了。

 

4、忽略某些文件


        对于不需要加入到版本中,并且使用git status时不再提示的文件。

        在.gitignore文件中进行配置

        例如*.exe

        那么所有的以.exe结尾的文件都会被忽略,而不再提醒。

 

        例子:

        # 此为注释– 将被 Git 忽略

        # 忽略所有 .a 结尾的文件

        *.a

        # 但 lib.a 除外

        !lib.a

        # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

        /TODO

        # 忽略 build/ 目录下的所有文件

        build/

        # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

        doc/*.txt

        # ignore all .txt files in the doc/ directory

        doc/**/*.txt

 

5、查看已暂存和未暂存的更新文件差异


        未暂存:

        $ git diff

        已暂存:

        $ git diff --staged

 

6、提交更新


        $ git commit

        之后进入vim编辑提交说明,保存即可。

 

        $ git commit --m “comment”

        使用-m命令可以直接在一行命令中写说明。

 

        $ git commit -a

        使用-a命令,会把未暂存和已暂存的文件一起提交,不然只会提交已暂存的文件。

 

7、删除文件和取消跟踪


        可以先本地使用rm命令删掉,这时候放在未暂存区域,之后用“git rm文件名”删掉。

 

        也可以直接使用“git rm 文件名”删掉。

 

        另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆 .a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:

 

        $ git rm --cached readme.txt

 

8、移动文件


        例如要把test.cpp改为tt.cpp

        $ git mv test.cpp tt.cpp

 

        就相当于是

    $ mv README.txt README

        $ git rm README.txt

        $ git add README

 

9、查看提交历史


        $ git log

 

10、撤销操作


        (1)覆盖上一次的提交

        $ git commit --amend

        会将上次提交和这次提交合并起来,算作一次提交。

 

        (2)取消已暂存文件

        $ git reset HEAD <file>

        这个时候文件状态就从已暂存变为未暂存

 

        (3)取消对文件的修改(还没有放到暂存区)

        $ git checkout -- <file>

 

11、运程仓库的使用


        (1)查看当前的远程库

        $ git remote

        会列出每个远程库的简短的名字,默认使用origin表示原始仓库

 

        $ git remote -v

        会额外列出远程库对应的克隆地址

 

        (2)添加远程仓库

        $ git remote add [shortname] [url]

 

        (3)从远程仓库抓取数据

        $ git fetch [remote-name]

        抓取数据,但并不合并到当前分支

 

        $ git pull

        自动抓取数据,并自动合并到当前分支

$ git branch -r

查看所有远程分支


        $ git checkout -b test origin/test

        获取远程分支到本地新的分支上,并切换到新分支

 

        (4)推送数据到远程仓库

        $ git push [remote-name] [branch-name]

        推送操作会默认使用origin和master名字

 

        (5)查看远程仓库信息

        $ git remote show [remote-name]

        除了对应的克隆地址外,它还给出了许多额外的信息。它友善地告诉你如果是在 master 分支,就可以用 git pull 命令抓取数据合并到本地。另外还列出了所有处于跟踪状态中的远端分支。

 

        (6)远程仓库的删除

        $ git remote rm [remote-name]

 

12、标签的使用


        (1)显示已有的标签

        $ git tag

 

        (2)新建标签

        $ git tag v1.0

        新建一个简单的标签

 

        $ git tag -a v1.0 -m ‘my version 1.0’

        -m指定了对应标签的说明

 

        (3)后期加注标签

        $ git log --pretty=oneline --abbrev-commit

        先显示提交历史

        $ git tag -a v1.1 9fceb02

        补加标签

 

        (4)推送标签

        $ git push origin [tagname]

 

        13、设置命令别名

        $ git config --global alias.co checkout

 

三、Git分支


1、新建分支


        $ git branch testing

        会在当前commit对象上新建一个分支指针

 

        注:HEAD这个特别的指针是指向正在工作中的本地分支的指针


2、切换分支


        $ git checkout testing

        切换到testing分支上

 

3、分支的合并


        在master分支上,执行:

        $ git merge testing

        将tesing分支合并回master

 

4、使用合并工具(可以自己设置,例如设置成vimdiff)


        $ git mergetool

 

5、分支的管理


        $ git branch --merged

        查看哪些分支已经被并入当前分支,通常这些都可以删除了。

 

        $ git branch -d testing

        删除一个分支

 

        $ git branch -D testing

        如果该分支尚没有合并,可以使用-D选项强制删除。

 

6、推送本地分支


        $ git push origin testing

 

7、分支的衍合


        例如现在有两个分支,一个master,一个testing

        $ git checkout testing

        $ git rebase master

        $ git checkout master

        $ git merge testing

        通常在贡献自己的代码之前先衍合,再提交,会让历史提交记录更清晰。


四、Git调试


1、文件标注


        $ git blame -L 12,22 test.cpp

        查看test.cpp文件对每一行进行修改的最近一次提交。

 

2、查看文件的历史提交


        $ git log --pretty=oneline test.cpp

        查看test.cpp文件的历史提交记录

 

3、查看文件的历史版本


        $ git show [commit] [file]

        例如:$ git show 7da7c23 test.cpp

        查看7da7c23这次提交的test.cpp文件。


4、查看历史提交的详细文件变化

        $ git log -p -2
       通过这条命令可以看到最近两次提交的文件变化情况,删除的部分会以“-”开头,新增的部分会以“+”开头,方便查看。


0 0
原创粉丝点击