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!