创建版本
创建本地仓库
$ 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"