git使用

参考自廖雪峰的官方网站:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

添加文件到本地暂存区:

  1. 添加单个文件

    1
    git add hello.md
  2. 添加多个文件[用空格区分]

    1
    git add hello.md word.md //此处添加了【hello.md】【word.md】

git commit把暂存区的所有内容提交到当前分支:

  1. 回车进入vim输入说明文本,按键盘上[esc]输入:wq 保存退出vim

    1
    git commit
  2. 在提交版本的时候以-m为参,输入说明文本

    1
    git commit -m '本次提交的说明文本'

git diff file:

1
2
git diff file
//点击键盘上的[q]退出diff

git log
显示从最近到最远的提交日志

1
2
git log //显示的更为详细
git log --pretty=oneline //显示版本号和版本说明

版本回退
HEAD:表示当前版本,当前分支
HEAD^:上一个版本
HEAD^^:上上一个版本
HEAD~100:往上100个版本

1
2
3
4
git reset --hard HEAD^ //回退到上一个版本
git reflog //查看git的每一步动作
git reset --hard 未来版本id
git reset HEAD file //可以把暂存区的修改撤销掉(unstage),重新放回工作区

git checkout – file丢弃工作区的修改:

  • 一种是文件自修改后还没有git add添加,现在,撤销修改就回到和版本库一模一样的状态;
  • 一种是文件已经git add,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
    1
    git checkout -- <file name>

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

将本地库与远程库关联

1
2
3
4
5
6
7
8
//要关联一个远程库,使用命令
git remote add origin git@server-name:path/repo-name.git
//第一次推送master分支的所有内容到远程库
git push -u origin master
//推送最新修改到远程库
git push origin master

直接从远程库克隆

1
git clone git@server-name:path/repo-name.git

分支

创建/切换分支:

  • 创建并切换到新创建的分支下

    1
    git checkout -b <name>
  • 创建分支

    1
    git branch <name>
  • 切换到分支

    1
    git checkout <name>

查看分支
git branch命令会列出所有分支,当前分支前面会标一个号*

1
git branch

将分支推到远程仓库
在要推到远程仓库的分支下

1
git push --set-upstream origin <name>

合并分支
git merge命令用于合并指定分支到当前分支

1
2
//dev分支会被合并到当前分支中
git merge <branch-name>[要被合并的分支名称]

合并后删除分支

1
git branch -d <name>

分支没有被合并,如果删除,将丢失掉修改,强行删除

1
git branch -D <branch-name>

看到分支的合并情况

1
2
3
//查看分支合并图
git log --graph
git log --graph --pretty=oneline --abbrev-commit

使用Fast forward模式,删除分支后,会丢掉分支信息
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
–no-ff参数,表示禁用Fast forward

1
git merge --no-ff -m "本次合并要创建一个commit的描述文本" <branch-name>

当工作只进行到一半,还没法提交。但是,必须在现在修复该bug,怎么办?
幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//转移正在开发的内容到stash
git stash
//查看stash
git stash list
//将stash中的内容恢复,并将stash内容删除
git stash pop
//将stash中的内容恢复
git stash apply
//删除stash中的内容
git stash drop

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

1
git stash apply stash@{0}

标签

创建标签

1
git tag v1.0[标签名称]

为对应的commit打标签

1
git tag v0.9 6224937[commit id]

创建带有说明的标签

1
git tag -a v0.1[标签名称] -m "version 0.1 released 标签说明" 3628164[commit id]

查看标签:

  • 查看标签

    1
    git tag
  • 查看标签信息

    1
    git show <tagname>

删除标签:

  1. 删除本地标签

    1
    git tag -d <tag-name>
  2. 删除远程标签【1.先将本地标签删除】

    1
    git push origin :refs/tags/tagname

将标签推到远程

1
2
3
4
git push origin <tagname>
//推送全部尚未推送到远程
git push origin --tags

git配制

1
2
3
4
//显示颜色
git config --global color.ui true
//别名
git config --global alias.st status

git fetch:相当于是从远程仓库获取最新版本到本地,不会自动merge,需要程序员自己去merge

1
2
git fetch origin master
git merge origin/master

git pull:从远程仓库获取最新版本,自动merge到本地仓库