git———study

Git 学习

1 初始化

http://www.oschina.net/p/gogs/

一、选择一个合适的地方,创建一个空目录:

$ mkdir learngit 
$ cd learngit
$ pwd
/c/Users/w/learngit

二、初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。

$ git add readme.txt
$ git commit -m "wrote a readme file"
2 版本状态
  • 要随时掌握工作区的状态,使用git status命令。
    • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
版本回退

1、 git log命令显示从最近到最远的提交日志(–pretty=oneline )
2、回退上一个版本 ,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

$ git reset --hard HEAD^
小结
  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。

  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

3 撤销修改

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。

```
$ git checkout -- readme.txt
```

git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

$ git reset HEAD readme.txt
Unstaged changes after reset:
M       readme.txt
小结

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

  • git reset HEAD^ //回退至上一版本, 并重置缓存区
  • git reset HEAD~10 //回退至10个版本之前, 并重置缓存区
  • git reset –soft HEAD //回退时不重置缓存区和工作区
  • git reset –mixed HEAD //回退时重置缓存区, 默认选项
  • git reset –hard HEAD //回退时重置缓存区和工作区
  • git reset //不指定HEAD, 用来清空缓存区的修改
  • git reset filename //清空缓存区指定文件的修改
  • git reset –hard //不指定HEAD, 用来清空工作区和缓存区的修改
  • git reset –hard filename //清空工作区和缓存区指定文件的修改
  • git checkout branch //切换branch, 同时重置缓存区和工作区, 如果工作区有修改没有提交, 需要先commit或stash
  • git checkout branch –force //切换branch, 同时重置缓存区和工作区
  • git checkout –force //不指定branch, 用来清空工作区的修改(缓存区不变, 如果之前有add, 则工作区与缓存区一致)
  • git checkout – filename //清空工作区指定文件的修改

你可能感兴趣的:(Python基础)