接下来就开始一点点的介绍一下入门的常用命令。如果你英文够好,那么强烈推荐看官方文档
https://git-scm.com/docs  这里面是最全、最权威的用法。

1、git仓库的创建和初始化相关的命令。

1.1 、git init。
从本地目录初始化git仓库,直接调用git init 。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e
  2. $ mkdir test
  3. Administrator@9GPBSPCCTFQXEUX MINGW64 /e
  4. $ cd test
  5. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/test
  6. $ git init
  7. Initialized empty Git repository in E:/test/.git/
这样就在test目录下生成一个.git仓库,然后你就可以在当前目录下进行一系列的对文件的版本控制的操作.
git init --bare
创建一个裸库,其实后面不指定git仓库的文件夹的时候直接把.git中的所有目录生成到了当前目录下。暂时还不
清楚使用环境。
1.2、git clone
从远程库克隆一个一模一样的git仓库用于开发和管理。
Git能在许多协议下使用,所以Git URL可能以ssh://, http(s)://, git://。
git clone <版本库的网址> <本地目录名>  在第二个参数指定的目录中生成远程库的拷贝.
git clone <版本库的网址>:当不指定目录名字的时候会以最后的/后面的路径为目录(不包含.git)
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e
  2. $ mkdir remote
  3. Administrator@9GPBSPCCTFQXEUX MINGW64 /e
  4. $ cd remote/
  5. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/remote
  6. $ git clone git@github.com:zhaoJoeyuan/TestTwo.git
  7. Cloning into 'TestTwo'...
  8. remote: Counting objects: 19, done.
  9. remote: Compressing objects: 100% (17/17), done.
  10. Receiving objects: 100% (19/19), done.
  11. Resolving deltas: 100% (3/3), done.
  12. remote: Total 19 (delta 3), reused 0 (delta 0), pack-reused 0
  13. Checking connectivity... done.
  14. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/remote
  15. $ ls -a
  16. ./ ../ TestTwo/
  17. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/remote
  18. $ cd TestTwo/
  19. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/remote/TestTwo (master)
  20. $ ls -a
  21. ./ ../ .git/ README.md 第四个
克隆完毕后远端的url对应的别名默认为origin.如下查看:
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/remote/TestTwo (master)
  2. $ git remote -v
  3. origin git@github.com:zhaoJoeyuan/TestTwo.git (fetch)
  4. origin git@github.com:zhaoJoeyuan/TestTwo.git (push)
git clone -b 远程库的某个分支名字  <版本库的网址> :直接克隆版本库的某个分支,这样克隆下来就不是默认的分支.
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e
  2. $ git clone -b TestTTT git@github.com:zhaoJoeyuan/TestTwo.git TestTTT
  3. Cloning into 'TestTTT'...
  4. remote: Counting objects: 22, done.
  5. remote: Compressing objects: 100% (19/19), done.
  6. remote: Total 22 (delta 4), reused 0 (delta 0), pack-reused 0
  7. Receiving objects: 100% (22/22), done.
  8. Resolving deltas: 100% (4/4), done.
  9. Checking connectivity... done.
  10. Administrator@9GPBSPCCTFQXEUX MINGW64 /e
  11. $ cd TestTTT/
  12. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTTT (TestTTT)
  13. $
可以看到直接就是在TesTTT分之下了。
2、git基本的快照相关的命令。
2.1、git add命令.
我们新建三个文件夹,并且都处于untracked状态.
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/test (master)
  2. $ ls
  3. Fuck.txt OMG.txt Reamme.txt
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/test (master)
  2. $ git status
  3. On branch master
  4. Initial commit
  5. Untracked files:
  6. (use "git add <file>..." to include in what will be committed)
  7. Fuck.txt
  8. OMG.txt
  9. Reamme.txt
git  add  文件名. 把当前文件添加到缓存区(Indes/Stage)当中.
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/test (master)
  2. $ git add Reamme.txt
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/test (master)
  2. $ git status
  3. On branch master
  4. Initial commit
  5. Changes to be committed:
  6. (use "git rm --cached <file>..." to unstage)
  7. new file: Reamme.txt
  8. Untracked files:
  9. (use "git add <file>..." to include in what will be committed)
  10. Fuck.txt
  11. OMG.txt

git  add  -u 将目录下所有修改和删除存至缓存区,但不包扣新增就是新建的文件处于unteacked状态是不会add到缓存
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git status
  3. On branch master
  4. Your branch is up-to-date with 'origin/master'.
  5. Untracked files:
  6. (use "git add <file>..." to include in what will be committed)
  7. Update.txt
  8. nothing added to commit but untracked files present (use "git add" to track)
  9. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  10. $ git add -u
  11. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  12. $ git status
  13. On branch master
  14. Your branch is up-to-date with 'origin/master'.
  15. Untracked files:
  16. (use "git add <file>..." to include in what will be committed)
  17. Update.txt
  18. nothing added to commit but untracked files present (use "git add" to track)
可以看到完全没什么作用,其实从-u也可以感觉出来,update吗。你以前没加入过缓存的就不管了,加入过的比如你
又修改或者删除了,那么重新add.

git add -A/--all和git add . 在git version 2.x以后是一模一样的,它们会添加项目中所有的文件到缓存区。而在 1.x的版
本git add . 是不会添加delete的文件的.网上的图:
2.2、git status

查看当前仓库的状态:列出了(修改过的、新创建的、已经暂存但未提交的)文件的状态。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git status
  3. On branch master
  4. Your branch is ahead of 'origin/master' by 3 commits.
  5. (use "git push" to publish your local commits)
  6. Changes to be committed:
  7. (use "git reset HEAD <file>..." to unstage)
  8. deleted: Update.txt
git status -s 显示简短的信息:

  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git status -s
  3. D Update.txt
git  status    -b/--branch 查看当前所在的分支的状态信息

  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git status -sb
  3. ## master...origin/master [ahead 3]
  4. D Update.txt
2.3、git commit :将缓存区内容添加到仓库中. 这个是把缓存区的-----版本库。还要注意只是提交缓存区中的内容。

基本用法 git commit  :会把当前目录下的缓存区中所有的文件commit到版本库当中.此时会自动弹出默认的编辑器
让你编写提交的message信息。编写完毕后退出,自动完成提交。编辑器可以通过 core.editor=xx来进行修改.
git commit -m "message(提交信息)"  :这样可以快速的编写提交信息。不会再额外的弹出提示框,但是这样的话
mesage信息就很难控制格式了,一般实际开发中不建议这样。
git commit -a :这个是把所有的已经通过git add 到缓存区的内容都提交到版本库,其实就是相当于自动帮助你add
你前面可能commit一次了,这次又修改了文件,此时你还需要git add xxx   git commit 。执行这个
命令就相当于帮你执行git add了,但它不会影响untracked的文件,也就是未加入缓存区的.
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git status
  3. On branch master
  4. Your branch is ahead of 'origin/master' by 6 commits.
  5. (use "git push" to publish your local commits)
  6. Changes not staged for commit:
  7. (use "git add <file>..." to update what will be committed)
  8. (use "git checkout -- <file>..." to discard changes in working directory)
  9. modified: one.txt
  10. no changes added to commit (use "git add" and/or "git commit -a")
  11. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  12. $ git commit -m "teste"
  13. On branch master
  14. Your branch is ahead of 'origin/master' by 6 commits.
  15. (use "git push" to publish your local commits)
  16. Changes not staged for commit:
  17. modified: one.txt
  18. no changes added to commit
  19. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  20. $ git commit -am "haha"
  21. ......
  22. The file will have its original line endings in your working directory.
  23. 1 file changed, 1 insertion(+), 1 deletion(-)
git commit --amend :用于修改最后一次提交的message信息。当你发现错误的时候就可以重新进行编写。

  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git log -1
  3. commit ab720bc81ac4f877beb79c80a41b935e7688835b
  4. Author: Joey <zhaojoeyuan@163.com>
  5. Date: Sun Apr 16 16:13:47 2017 +0800
  6. haha
  7. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  8. $ git commit -amend
  9. error: did you mean `--amend` (with two dashes ?)
  10. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  11. $ git commit --amend
  12. ......
  13. The file will have its original line endings in your working directory.
  14. 1 file changed, 1 insertion(+), 1 deletion(-)
  15. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  16. $ git log -1
  17. commit 0b4e212189ba63e27d14559ed4894e4710874202
  18. Author: Joey <zhaojoeyuan@163.com>
  19. Date: Sun Apr 16 16:13:47 2017 +0800
  20. s改正的aha
              git commit  xxxx(文件路径):当你在commit的命令行加上文件路径的时候。那么就会把所有你加上的文件的中的
                                 内容提交到版本库,无论当前文件的内容有没有被加入到缓存区,(就是和缓存区add进去的内容就无
                                 关了)并且如果没有被加入到缓存区,还会自动的加入到缓存区。

  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git status
  3. On branch master
  4. Your branch is ahead of 'origin/master' by 8 commits.
  5. (use "git push" to publish your local commits)
  6. Changes not staged for commit:
  7. (use "git add <file>..." to update what will be committed)
  8. (use "git checkout -- <file>..." to discard changes in working directory)
  9. modified: one.txt
  10. no changes added to commit (use "git add" and/or "git commit -a")
  11. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  12. $ git commit -m "one.txt" one.txt
  13. .......
  14. The file will have its original line endings in your working directory.
  15. 1 file changed, 1 insertion(+)
  16. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  17. $ git status
  18. On branch master
  19. Your branch is ahead of 'origin/master' by 9 commits.
  20. (use "git push" to publish your local commits)
  21. nothing to commit, working directory clean
可以看到即使处于modify状态的文件也被自动的加入缓存并且提交到了版本库.
2.4、git diff
显示工作区和索引区、索引区和版本库、版本库内的两次提交、两个blob对象、两个文件等等之间的区别。更具
不同的参数来显示不同的diff的内容,用的最多的是前三个内容的diff。
git  diff :不加任何参数的时候是比较的工作区和暂存区的差异。就是你已经修改但是还未add到暂存区。
git diff --cached :是暂存区和版本库之间的差异。就是你已经add了但是还未commit。
git diff HEAD : 查看当前的所有的差异,包括已缓存和未缓存的。HEAD其实就是限制了path,这个path下的所有
差异都要显示。此时我改成当前分支比如当前是master也是一样的。
其实就是工作区和版本库之间的区别。HEAD当前分支的版本库。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git status
  3. ......
  4. Changes to be committed:
  5. (use "git reset HEAD <file>..." to unstage)
  6. modified: one.txt
  7. Changes not staged for commit:
  8. (use "git add <file>..." to update what will be committed)
  9. (use "git checkout -- <file>..." to discard changes in working directory)
  10. modified: Two.txt
  11. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  12. $ git diff HEAD
  13. warning: LF will be replaced by CRLF in Two.txt.
  14. The file will have its original line endings in your working directory.
  15. diff --git a/Two.txt b/Two.txt
  16. index f22c573..6f359b7 100644
  17. --- a/Two.txt
  18. +++ b/Two.txt
  19. @@ -1,2 +1,3 @@
  20. aasaasdadadczxczc
  21. commit
  22. +asdasdada
  23. diff --git a/one.txt b/one.txt
  24. index 502265c..a571112 100644
  25. --- a/one.txt
  26. +++ b/one.txt
  27. @@ -2,3 +2,4 @@ asdasdadadzkkads
  28. 产生了快捷查看了
  29. asadasd看
  30. ttttttttest
  31. +ssssss
  32. warning: LF will be replaced by CRLF in one.txt.
  33. The file will have its original line endings in your working directory.
git diff HEAD^ HEAD :其实就是 git diff commitId1  commitId2 :比较这两次提交之间的差异。
以上的任何命令加上 --stat:表示只查看概要,这个应用也很多的。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git diff master --stat
  3. Two.txt | 1 +
  4. one.txt | 1 +
  5. 2 files changed, 2 insertions(+)

额外的小知识点:
git diff 比较的时候的输出格式: 
+++:表示目标文件,+开头的行,是只出现在目标文件中的行。
---:表示源文件,-开头的行,是只出现在源文件中的行。
空格开头的行,是源文件和目标文件中都出现的行。
(以前一直当成了增加内容减少内容,理解的有偏差)
通常工作区域的文件都是被当作目标文件来看待。
例如:当我们在工作区中为one.txt添加一行以后
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git diff
  3. diff --git a/one.txt b/one.txt
  4. index 502265c..ca105df 100644
  5. --- a/one.txt
  6. +++ b/one.txt
  7. @@ -2,3 +2,4 @@ asdasdadadzkkads
  8. 产生了快捷查看了
  9. asadasd看
  10. ttttttttest
  11. +Test diff
此时b就是目标文件:工作区域。a就是源文件:缓存区。此时前面带+的表示只有工作区域中有,前面是空格的证明
两个都有。
而当我们调用git add one.txt把它加入到缓存区时,在调用git diff --cached
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git diff --cached
  3. diff --git a/one.txt b/one.txt
  4. index 502265c..ca105df 100644
  5. --- a/one.txt
  6. +++ b/one.txt
  7. @@ -2,3 +2,4 @@ asdasdadadzkkads
  8. 产生了快捷查看了
  9. asadasd看
  10. ttttttttest
  11. +Test diff
此时缓存区时目标文件、版本库是源文件。

当有两个参数的时候git diff  源文件/版本  目标文件/版本。
2.5、git reset
此命名根据包含不包含路径有两种用法:
第一种带路径的格式:git reset [-q] [<commit>] [--] <path>。
用指定的commit所指向的目录树中的path路径下文件替换暂存区中的文件。  
如:git reset HEAD Hello.txt             HEAD也就是上次提交的版本中的Hello.txt文件替换当前暂存区的,其实就是
                      实现了回退已添加到缓存区的path路径对应的文件。此处的HEAD理解的还不是很好。
注意从上面看HEAD是可省略的.git reset Hello.txt效果是一样的.
                      git reset .   :注意这个命令会回退掉所有add到缓存区中的修改。
              这个命令只能回退未commit到版本库中的文件。只是用某一次提交的文件提交暂存区的文件
第二种用法不带路径格式:git reset [--soft|--hard|--mixed|--merge|--keep] [-q] [<commit>]。
重置分支引用的指向所以很快.
参数不同决定是否覆盖暂存区和工作区对,主要的三种参数进行学习:
--soft :回退到commit版本。但工作区和暂存区都不会用commit版本的内容进行覆盖。它只是把版本库回退
到commit的版本。
--hard:暂存区,工作区全部用指定提交版本的目录树替换掉。注意是非常危险的,会导致工作区和缓存区
文件全部丢失(加入你是在commitid版本之后才加的这些文件)。
--mixed:默认的也是这个参数(不写的时候)。这个会用提交的版本目录树来覆盖当前的版本库和暂存区,但
是不会覆盖工作区域的修改。会保留对应的文件自动变为相应的状态。
返回到上一个提交或者上上个提交有较为简单的写法:
                                  git reset --hard HEAD^    git reset --hard HEAD^^ 当然往上100个版本写100个^比较容易数不过来,所
以写成HEAD~100。
此时有个问题假如你回退过头了,此时git log又没有commitid了,你可以通过git refflog:会显示任何的一次操
作id。然后调用如git reset --hard commitid即可。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git reflog
  3. b9a6a15 HEAD@{0}: reset: moving to b9a6a15
  4. 136e495 HEAD@{1}: reset: moving to 136e495
  5. b9a6a15 HEAD@{2}: reset: moving to b9a6a15
  6. 136e495 HEAD@{3}: reset: moving to 136e495
  7. 582f179 HEAD@{4}: reset: moving to 582f1794756f1a6bb933b88c3dd50bfbee4ef720
  8. 136e495 HEAD@{5}: commit: ALL
  9. c38f77d HEAD@{6}: reset: moving to c38f77d0563846a4099d7af16e1cd7fe50f21a3b
  10. 7d20fa7 HEAD@{7}: commit: HAHHA
  11. d0d0f14 HEAD@{8}: reset: moving to HEAD^
  12. e053fa1 HEAD@{9}: commit: ALL
  13. d0d0f14 HEAD@{10}: commit: RRRRR
  14. 1aa03f3 HEAD@{11}: checkout: moving from test to master
  15. b9a6a15 HEAD@{12}: checkout: moving from master to test
  16. 1aa03f3 HEAD@{13}: checkout: moving from test to master
  17. b9a6a15 HEAD@{14}: commit: AA
  18. 1aa03f3 HEAD@{15}: checkout: moving from master to test
  19. 1aa03f3 HEAD@{16}: commit: one.txt
2.6 、git rm 删除操作用于把文件从git版本控制中删除。
git  rm  xxx(文件名字) 把文件从git仓库中删除。此时文件处于delete的状态,并且已从硬盘上,但你此时还可以
恢复。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git rm Two.txt
  3. rm 'Two.txt'
  4. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  5. $ git status
  6. On branch master
  7. Your branch is ahead of 'origin/master' by 11 commits.
  8. (use "git push" to publish your local commits)
  9. Changes to be committed:
  10. (use "git reset HEAD <file>..." to unstage)
  11. deleted: Two.txt
  12. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  13. $ ls
  14. AHAHH.txt Hello.txt one.txt README.md Three.txt 第四个
一旦你提交以后就彻底没了,只能通过版本回退来恢复了。

git rm -r xxx(文件夹的名字) :用于把指定的文件目录从git中移除。
git rm --cached  Hello.txt :只是把文件从git中删除,但是文件本身还是会存在于系统当中。只是不参与版本控制。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  2. $ git rm --cached Hello.txt
  3. rm 'Hello.txt'
  4. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (master)
  5. $ ls
  6. AHAHH.txt Hello.txt README.md Three.txt 第四个
rm:就是直接删除命令,是文件处于delete状态还是在版本控制下,可以add或者别的命令继续控制。

2.7、git stash:保存工作现场。
使用的场景:当我们正在一个分支上做任务时,此时又来一个非常紧急的任务,而当前的任务我还不想提交。那么
怎么办呐?就用git stash来把当前的环境保存下来。如果你不提交也不用stash的时候会有如下提示,并且不能切
换分支。
2.4.2里面可以,冲突好像就不可以
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git checkout master
  3. error: Your local changes to the following files would be overwritten by checkout:
  4. AHAHH.txt
  5. Please, commit your changes or stash them before you can switch branches.
  6. Aborting
调用git status以后:
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git stash
  3. Saved working directory and index state WIP on test: 630e8e9 saa
  4. HEAD is now at 630e8e9 saa
  5. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  6. $ git status
  7. On branch test
  8. nothing to commit, working directory clean
工作区域就干净了。当然也可以保存多个stash如下:我们队one.txt进行修改再进行git stash进行保存

  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ vi one.txt
  3. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  4. $ git status
  5. On branch test
  6. Changes not staged for commit:
  7. (use "git add <file>..." to update what will be committed)
  8. (use "git checkout -- <file>..." to discard changes in working directory)
  9. modified: one.txt
  10. no changes added to commit (use "git add" and/or "git commit -a")
  11. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  12. $ git stash
  13. Saved working directory and index state WIP on test: 630e8e9 saa
  14. HEAD is now at 630e8e9 saa
然后切换到master分支来进行解决紧急任务。解决完闭后再回到本分支。然后调用

git stash list :列出所有的已经加入到git栈中的工作环境。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git stash list
  3. stash@{0}: WIP on test: 630e8e9 saa
  4. stash@{1}: WIP on test: 630e8e9 saa
此时你想恢复那个就恢复那个:git stash apply id(保存的那个)

  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git stash apply stash@{0}
  3. On branch test
  4. Changes not staged for commit:
  5. (use "git add <file>..." to update what will be committed)
  6. (use "git checkout -- <file>..." to discard changes in working directory)
  7. modified: one.txt
  8. no changes added to commit (use "git add" and/or "git commit -a")
可以看到是恢复的我们第二次保存的状态,因为git使用栈的方式进行管理的,第二次的就跑到了栈顶部。需要注意的
     是恢复以后并不会自动删除stash。需要调用git stash drop  id

  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git stash drop stash@{0}
  3. Dropped stash@{0} (e8938b383f8e6bae350c146d9ce829b9df68ca69)
注意其实是把栈顶部的给弹出来了,所以下面的会再次变成栈顶。
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git stash list
  3. stash@{0}: WIP on test: 630e8e9 saa
所以还有一种方式 git stash pop :恢复最近保存的状态,并且自动删除这个状态。就是处理栈顶嘛。

  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git stash pop
  3. On branch test
  4. Changes not staged for commit:
  5. (use "git add <file>..." to update what will be committed)
  6. (use "git checkout -- <file>..." to discard changes in working directory)
  7. modified: AHAHH.txt
  8. modified: one.txt
  9. no changes added to commit (use "git add" and/or "git commit -a")
  10. Dropped refs/stash@{0} (d265c0b84ac2cdc3116df1e3491bd6b7b6fdbfd7)
  1. Administrator@9GPBSPCCTFQXEUX MINGW64 /e/TestTwo (test)
  2. $ git stash list
可与看出自动删除了。

还有一个清空栈的命令:git stash list.

git入门-----初始化命令(init、clone),Basic Snapshotting(add、status、commit、diff、reset、stash)相关推荐

  1. Git入门之命令行删除文件及上传大文件至Github(二)

    自2013年开始,作者的代码基本是分享到CSDN下载区,最早设置均是免费的,但随着下载量增加,分数自动增长.为了更好地分享开源代码及相关工具,赶上时代潮流,作者后续会将代码分享至Github和CSDN ...

  2. git仓库 初始化命令

    命令行指令 Git 全局设置 git config --global user.name "xx" git config --global user.email xxx@xx.co ...

  3. 【Java从0到架构师】git 入门和基本应用

    git 核心原理剖析和基本应用 Git 入门 初始化版本库 把文件添加到版本库 查看日志 版本号问题 Git - 时间穿梭机 版本仓库的原理 查看版本库状态 - git status 查看差异 - g ...

  4. linux之git入门命令

    安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹,打开,然后执行 > git init 检出仓库 执行如下命令以创建一个本 ...

  5. Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突...

    Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...

  6. git入门与实践【转】

    转自:http://www.cnblogs.com/shenhaocn/archive/2011/03/13/1982957.html 什么是版本控制 要了解什么是git,首先需要了解什么是版本控制( ...

  7. 程序员必备:Git入门,超详细

    对于一个刚入行的程序员或者是大学生,我建议大家还是好好的把git学学,因为在现在大部分企业代码的管理工具都是使用Git,其实Git很简单,无非就是一些命令,我们平常多去用它,就能熟能生巧.我觉得你们可 ...

  8. Git 入门最佳实践

    Git 入门最佳实践 前言 Git简介 实用主义 深入探索 总结 参考资料 前言 Git 是程序员学习和工作都离不开发工具,今天和大家分享 Git 常用命令总结. Git简介 Git 是一种分布式版本 ...

  9. 保姆级 Git 入门教程,10000 字详解

    转载来自:杰哥的IT之旅 前言 Git简介 实用主义 深入探索 总结 参考资料 Git简介 Git 是一种分布式版本控制系统,它可以不受网络连接的限制,加上其它众多优点,目前已经成为程序开发人员做项目 ...

  10. Git基础(常用命令)介绍

    版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs:集中化的版本控制系统,如CVS.SVN:分布式版本控制系统,如Git. Gi ...

最新文章

  1. Science:中科院微生物所向华/李明组揭示护卫CRISPR-Cas的全新毒素-抗毒素RNA系统
  2. jQuery之get方法
  3. BZOJ2005: [Noi2010]能量采集 莫比乌斯反演的另一种方法——nlogn筛
  4. ANDROID自定义视图——onMeasure流程,MeasureSpec详解
  5. CVE-2009-3459
  6. 大学数学不好是一种什么体验?
  7. tplink 2.4g弱信号剔除_科普 l 路由器信号2.4G和5G区别
  8. webassembly类型_几张图让你看懂WebAssembly
  9. Eclipse+OpenCV3.1.0 的环境搭建
  10. 话单数据仓库搭建(2)- 数据仓库ODS及DWD层
  11. linux查看任务计划结果,Linux 计划任务
  12. 一群人在网上直播自己怎么写代码,而且还有人爱看
  13. 深度学习平台、CPU和GPU使用
  14. 新媒体中的淘宝电商运营资源
  15. 项目管理修炼之道之把握项目的节奏
  16. 入门避雷需知:如何选择关于Python机器学习的书
  17. 教育培训行业营销推广方案
  18. 前端动态生成横向树形表格
  19. 操作系统实验ucore lab6
  20. Android java时间戳转年月日时分秒(三十七)

热门文章

  1. 【单位圆覆盖最多点】POJ 1981
  2. 彻底掌握基于HTTP网络层的 “前端性能优化“
  3. C1任务01-修改《植物大战僵尸》游戏存档
  4. php获取城市接口,根据ip调用新浪api获取城市名并转成拼音
  5. 集成学习Bagging与Boosting的区别
  6. excel表格打印每页都有表头_Excel打印时怎么让每一页都包括表头?
  7. 搞死SAP系统系列 让系统无法连接数据库
  8. hdu 6438 - 贪心
  9. cortex a7 a53_试驾初体验--我与奥迪A7的七天之旅
  10. 3D Food Printing【3D食物打印】