Git 总结

2016/6/24 posted in  Android Java

创建版本

创建本地仓库

$ git init
提示:Initialized empty Git repository in
/Users/xuyushi/Downloads/.git/`

会在本地生成 .git 文件

创建工作区文件

$ vim test.txt
内容为:this is a test

添加进 index

使用git status查看git 工程状态

On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    test.txt

nothing added to commit but untracked files present (use "git add" to track)
    

发现 test.txt为 Untracked状态

使用git add test.txt将test.txt添加进 index

执行完不提示

再次使用git status 查看状态

On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   test.txt

发现 test.txt为 Changes to be committed:状态

添加文件进git工程

$ git commit

出现vim界面,添加commit备注

init the project
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   new file:   test.txt
#

提示

[master (root-commit) 9edc2b1] init the project
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

再次使用git status 查看状态

On branch master
nothing to commit, working directory clean

版本回退

修改test.txt

$ vim test.txt
this is a test
add something

使用git diff可以看到两次修改的不同

git diff:是查看working tree与index file的差别的。

git diff --cached:是查看index file与commit的差别的。

git diff HEAD:是查看working tree和commit的差别的。(HEAD代表的是最近的一次commit的信息)

diff --git a/test.txt b/test.txt
index 90bfcb5..6fb5b55 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
 this is a test
+add something

依次

$ git add .
$ git commit 
使用`git log`可以看到两次commit的信息

​```bash
commit 3621c62a5421df8a0b39effc2c9efa1d7e168ac8
Author: xuyushi <xmy166@gmail.com>
Date:   Tue Jun 23 19:42:07 2015 +0800

    add something

commit 9edc2b1f9037490e3b089def232028567154af23
Author: xuyushi <xmy166@gmail.com>
Date:   Tue Jun 23 19:05:12 2015 +0800

        init the project

在Git中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,往上100个写成HEAD~100。

回退到上个版本使用

$ git reset --hard HEAD^

--hard 表示工作区和index区都被还原

每次修改,如果不add到暂存区,那就不会加入到commit中

git add之后git checkout -- file可以丢弃工作区的修改:

命令git checkout -- test.txt意思就是,test.txt文件在工作区的修改全部撤销,这里有两种情况:

分支管理

查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

合并分支

在主分支上 git merge

储藏

经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。

要查看现有的储藏,你可以使用 git stash list:

存多个可以添加备注信息。

git stash save "message"