Git是分布式代码托管的标杆,这里将提供如何学习Git,以及Git工作流的总结,和常用的操作命令。 @anarkh
- 工具详解 - Git 详解
- 必读
- 常用小结
- Git操作流程
- 代码提交和同步代码
- 代码撤销和撤销同步
- Git常用操作命令 - 代码提交和同步代码
- Git常用操作命令 - 代码撤销和撤销同步
- 已修改,但未暂存
- 已暂存,未提交
- 已提交,未推送
- 已推送到远程
- Git常用操作命令 - 其它常用命令
- 关联远程仓库
- 切换分支
- 撤销操作
- 版本回退与前进
- 配置属于你的Git
- gitignore
- 使用Gource生成版本记录视频
必读
如果要问一本就可以学习Git的书或者文章,毫无疑问我会推荐Git Pro2,绝对是良心之作啊
Git Pro 2
其它资料
在线学习
有个很好的在线学习网站,推荐给大家: https://learngitbranching.js.org/在新窗口打开

常用小结
读完Git Pro2, 大部分功能适合在使用的时候作为工具来参考,最需要理解的是常用的命令对应的workflow,以及分支管理和合并操作。
Git操作流程
代码提交和同步代码

代码撤销和撤销同步

Git常用操作命令 - 代码提交和同步代码
- 第零步: 工作区与仓库保持一致
- 第一步: 文件增删改,变为已修改状态
- 第二步: git add ,变为已暂存状态
bash
$ git status
$ git add --all
$ git add .
$ git add xx/xx.py xx/xx2.py- 第三步: git commit,变为已提交状态
bash
$ git commit -m"<这里写commit的描述>"- 第四步: git push,变为已推送状态
bash
$ git push -u origin master
$ git push
$ git branch
$ git branch -a在某个分支下,我最常用的操作如下
bash
$ git status
$ git add -a
$ git status
$ git commit -m 'xxx'
$ git pull --rebase
$ git push origin xxbranchGit常用操作命令 - 代码撤销和撤销同步
已修改,但未暂存
bash
$ git diff
$ git diff xx/xx.py xx/xx2.py
$ git checkout
$ git checkout .
$ git checkout xx/xx.py xx/xx2.py
$ git clean -f
$ git clean -df已暂存,未提交
这个时候已经执行过git add,但未执行git commit,但是用git diff已经看不到任何修改。 因为git diff检查的是工作区与暂存区之间的差异。
bash
$ git diff --cached
$ git reset
$ git reset --soft
$ git reset --hardgit reset --hard 操作等价于 git reset 和 git checkout 2步操作
已提交,未推送
执行完commit之后,会在仓库中生成一个版本号(hash值),标志这次提交。之后任何时候,都可以借助这个hash值回退到这次提交。
bash
$ git diff <branch-name1> <branch-name2>
$ git diff master origin/master
$ git reset --hard origin/master
$ git reset --hard HEAD^
$ git reset --hard <hash code>
$ git reset --soft/git reset已推送到远程
java
$ git push -f orgin master # 强制覆盖远程分支
$ git push -f # 如果之前已经用 -u 关联过,则可省略分支名慎用,一般情况下,本地分支比远程要新,所以可以直接推送到远程,但有时推送到远程后发现有问题,进行了版本回退,旧版本或者分叉版本推送到远程,需要添加 -f参数,表示强制覆盖。
Git常用操作命令 - 其它常用命令
关联远程仓库
- 如果还没有Git仓库,你需要
bash
$ git init- 如果你想关联远程仓库
bash
$ git remote add <name> <git-repo-url>- 如果你想关联多个远程仓库
bash
$ git remote add <name> <another-git-repo-url>- 忘了关联了哪些仓库或者地址
bash
$ git remote -v- 如果远程有仓库,你需要clone到本地
bash
$ git clone <git-repo-url>- 如果你想把别人仓库的地址改为自己的
bash
$ git remote set-url origin <your-git-url>切换分支
新建仓库后,默认生成了master分支
- 如果你想新建分支并切换
bash
$ git checkout -b <new-branch-name>- 看看当前有哪些分支
bash
$ git branch- 看看当前本地&远程有哪些分支
bash
$ git branch -a- 切换到现有的分支
bash
$ git checkout master- 你想把dev分支合并到master分支
bash
$ git merge <branch-name>- 你想把本地master分支推送到远程去
bash
$ git push origin master- 远程分支被别人更新了,你需要更新代码
bash
$ git pull origin <branch-name>- 本地有修改,能不能先git pull
bash
$ git stash
$ git pull
$ git stash pop撤销操作
- 恢复暂存区文件到工作区
bash
$ git checkout <file-name>- 恢复暂存区的所有文件到工作区
bash
$ git checkout .- 重置暂存区的某文件,与上一次commit保持一致,但工作区不变
bash
$ git reset <file-name>- 重置暂存区与工作区,与上一次commit保持一致
bash
$ git reset --hard <file-name>- 去掉某个commit
bash
$ git revert <commit-hash>- reset回退错误恢复
bash
$ git reflog
$ git reset --hard HEAD{5}
$ git pull origin backend-log版本回退与前进
- 查看历史版本
bash
$ git log- 你可能觉得这样的log不好看,试试这个
bash
$ git log --graph --decorate --abbrev-commit --all- 检出到任意版本
bash
$ git checkout a5d88ea- 远程仓库的版本很新,但是你还是想用老版本覆盖
bash
$ git push origin master --force- 觉得commit太多了? 多个commit合并为1个
bash
$ git rebase -i HEAD~4- 想回退到某一个版本
bash
$ git reset --hard <hash>- 想回退到上一个版本,有没有简便方法?
bash
$ git reset --hard HEAD^- 回退到上上个版本呢?
bash
$ git reset --hard HEAD^^- 回退错了,能不能前进呀
bash
$ git reflog- 刚才commit信息写错了,可以修改吗
bash
$ git commit --amend- 看看当前状态吧
bash
$ git status配置属于你的Git
- 看看当前的配置
bash
$ git config --list- 估计你需要配置你的名字
bash
$ git config --global user.name "<name>"- 希望别人看到你的commit可以联系到你
bash
$ git config --global user.email "<email address>"- 有些命令很长,能不能简化一下
bash
$ git config --global alias.logg "log --graph --decorate --abbrev-commit --all"