git基本概念

  • 工作区: 仓库目录.工作区是独立于各分支的(即切换分支时会将对应分支的版本cp到工作区).
  • 暂存区: 数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。
  • 版本库: 存放所有已经提交到本地仓库的代码版本
  • 版本结构: 有向无环图,图中每个节点代表一个代码版本。
  • HEAD: 指向当前工作区的版本,如果把版本看作图中的节点,则HEAD相当于存放该节点的指针
  • 分支: 记录起始版本到当前版本的一条路径的标记,进行git reset时跟随HEAD移动,进行git checkout时HEAD切换到其他分支

git常用命令

  1. git config --global user.name xxxx: 设置全局用户名,信息记录在~/.gitconfig文件中
  2. git config --global user.email xxxx@xxx.com: 设置全局邮箱地址,信息记录在~/.gitconfig文件中
  3. git init: 将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中
  4. git add xx: 将XX文件添加到暂存区
    • git add .: 将所有待加入暂存区的文件加入暂存区
  5. git rm --cached xx: 将所有待加入暂存区的文件加入暂存区
  6. git commit -m "备注信息": 将暂存区的内容提交到当前分支
  7. git status: 查看仓库状态
  8. git diff xxx: 查看XXX文件相对于暂存区修改了哪些内容
  9. git log: 查看当前分支的所有版本
  10. git reflog: 查看HEAD指针的移动历史(包括被回滚的版本)
  11. git reset --hard HEAD^git reset --hard HEAD~: 将代码库回滚到上一个版本
    • git reset --hard HEAD^^: 往上回滚两次,以此类推
    • git reset --hard HEAD~100: 往上回滚100个版本
    • git reset --hard 版本号: 回滚到某一特定版本(前七位)
  12. git checkout - xxgit restore xx: 将XX文件尚未加入暂存区的修改全部撤销
  13. git restore --staged xx: 将xx从暂存区里移除
  14. git remote add origin git@git.github.com:xxxx/XXXX.git: 将本地仓库关联到远程仓库
  15. git push -u(第一次需要-u以后不需要): 将当前分支推送到远程仓库
    • git push origin barnch_name: 将当前分支推送到远程仓库
  16. git clone git@git.github.com:xxx/XXX.git: 将远程仓库XXX下载到当前目录下
  17. git checkout -b barch_name: 创建并切换到branch_name这个分支
  18. git barnch: 查看所有分支和当前所处分支
  19. git checkout barnch_name: 切换到branch_name这个分支
  20. git merge barnch_name: 将分支branch_name合并到当前分支上
  21. git barnch -d barnch_name: 删除本地仓库的branch_name分支
  22. git push --ser-upstream origin branch_name: 设置本地的branch_name分支对应远程仓库的branch_name分支
  23. git barnch barnch_name: 创建新分支
  24. git push -d origin barnch_name: 删除远程仓库的branch_name分支
  25. git pull: 将远程仓库的当前分支与本地仓库的当前分支合并
    • git pull origin branch_name: 将远程仓库的branch_name分支与本地仓库的当前分支合并
  26. git barch --set-upstream-to=origin/barch_name1 barnch_name2: 将远程的branch_name1分支与本地的branch_name2分支对应
  27. git checkout -t origin/barch_name: 将远程的branch_name分支拉取到本地
  28. git stash: 将工作区和暂存区中尚未提交的修改存入栈中
  29. git stash apply: 将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
  30. git stash drop: 删除栈顶存储的修改
  31. git stash pop: 将栈顶存储的修改恢复到当前分支,同时删除栈顶元素
  32. git stash list: 查看栈中所有元素

一个极简工作流

拉取remote后创建自己的分支

  1. git clone 拉取仓库
  2. git checkout -b my-feature

自己的分支产生修改

  1. git diff
  2. git add <changed_ file>
  3. git commit
  4. git push origin my-feature

当remote的主分支有变化时

  1. git checkout master
  2. git pull origin master
  3. git checkout my-feature
  4. git rebase master 同步master分支
  5. git push -f origin my-featrue
  6. 在remote 仓库 new pull request
  7. 主仓库经代码审查后squash and merge 并删掉 my-feature
  8. git checkout master
  9. git branch -D my-feature
  10. git pull origin master

ps : git log --oneline --graph --decorate --all 查看当前结构图