Git 学习总结
2017-09-08
GitHub: 学习 Git + GitHub + 命令行
Git 学习资源
Git 和 GitHub 是独立的2个系统。
你可以不使用 GitHub 情况下,在本地使用 Git。
Git 是多版本管理工具。
GitHub 是Web代码托管。并采用 Git 的方式。
Git 命令
最常用的 Git 命令:
- 把它们添加到暂存区: git add <filename>或git add *
- 提交改动:git commit -m "代码提交信息"(把所有在暂存区的改动提交到HEAD)
- 提交到远端仓库:git push origin master(可以把 master 换成你想要推送的任何分支。)
- 从远端仓库(GitHub)获得最新改动以更新本地仓库:git pull
- 查看更多信息:git add --help或git commit --help等 (q退出查看)
- 要随时掌握工作区的状态,使用git status命令。
- 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
更多命令:
- HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令- git reset --hard commit_id。
- 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
- 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
- 连接并提交给远端仓库:git remote add origin <server>
Git 管理概念
工作区(Working Directory):本地目录。
版本仓库(Repository)Git 的版本仓库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区。还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
vi readme.txt (进入 vi 编辑)
:wq (退出)
为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
- 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
- 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
更多操作:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
更多资料
- 怼友荣:对于 git 个人觉得好用的教程
    - git - the simple guide - no deep shit!
 当初没有意识到这个教程好用,是因为没有实际操作一遍,且有对于英文的畏惧
- A Visual Git Reference
 以图片的形式清晰展现你的每条命令到底发生了什么
- Git - Reference
 官方文档,不必说了
 
- git - the simple guide - no deep shit!