Git系统可以分成两个层次:
(分支内部)提交代码
工作区 --->(暂存区) ---> 版本库
命令 | 说明 |
---|---|
git add | 文件修改添加到暂存区 |
git commit | 把暂存区的内容提交到当前分支 |
git log | 查看commit链 |
git checkout --file.txt | 用版本库里的版本替换工作区的版本 |
git ls-files | 查看版本库跟着了哪些文件 |
git reset HEAD file.txt | 丢弃暂存区的修改 |
git diff HEAD --file.txt | 查看该文件工作区和版本库里面最新版本的区别 |
git reset --hard HEAD^^ | 回退以前的版本 |
(分支之间)分支管理
- 本地分支之间
命令 | 说明 |
---|---|
git branch | 创建、删除分支,以及显示分支 |
git checkout | 切换分支 -b可以新建分支并切换 |
git merge | 用于合并指定分支到当前分支 |
git diff | 比较两个分支之间的不同 |
- 本地分支与github分支
命令 | 说明 |
---|---|
git push | 将本地分支推送到github分支 |
git pull | 将github分支同步到本地分支 |
git fetch | 将github分支同步到本地分支,但不会自动merge |
(git pull = git fetch + git merge,所以git pull用得多)
- github分支之间(在网站上的操作(非命令行),这里就涉及到多人合作review了)
新建一个工作分支
pull-request 将工作分支提交到master分支
Git中的一些术语概念
-
HEAD 就是当前活跃分支的游标
参考网址:What is HEAD in Git? - 分支:其实分支名就是一个指针,指向commit链上的某个节点。
-
解决冲突:在合并的时候经常会发生冲突,冲突肯定是两个分支的最新commit节点冲突,所以只要编辑文件弄出来一个更新的commit节点就能解决。要充分理解分支就是commit链上的指针这个概念。
参考网址:廖雪峰Git教程-解决冲突 -
ssh登陆:
ssh是一种不用每次都输入用户名和密码的远程登录协议。与git是独立的,登录远程服务器也是用ssh。放在这里介绍是因为工作中一般都是用ssh协议连接到github服务器,这样每次不用输入密码。
参考网址:Connecting to GitHub with SSH
参考网址:GitHub的SSH提交配置