git基本使用及一个极简工作流
git基本概念
- 工作区: 仓库目录.工作区是独立于各分支的(即切换分支时会将对应分支的版本cp到工作区).
- 暂存区: 数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。
- 版本库: 存放所有已经提交到本地仓库的代码版本
- 版本结构: 有向无环图,图中每个节点代表一个代码版本。
- HEAD: 指向当前工作区的版本,如果把版本看作图中的节点,则HEAD相当于存放该节点的指针
- 分支: 记录起始版本到当前版本的一条路径的标记,进行git reset时跟随HEAD移动,进行git checkout时HEAD切换到其他分支
git常用命令
git config --global user.name xxxx
: 设置全局用户名,信息记录在~/.gitconfig
文件中git config --global user.email xxxx@xxx.com
: 设置全局邮箱地址,信息记录在~/.gitconfig
文件中git init
: 将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中git add xx
: 将XX文件添加到暂存区git add .
: 将所有待加入暂存区的文件加入暂存区
git rm --cached xx
: 将所有待加入暂存区的文件加入暂存区git commit -m "备注信息"
: 将暂存区的内容提交到当前分支git status
: 查看仓库状态git diff xxx
: 查看XXX文件相对于暂存区修改了哪些内容git log
: 查看当前分支的所有版本git reflog
: 查看HEAD指针的移动历史(包括被回滚的版本)git reset --hard HEAD^
或git reset --hard HEAD~
: 将代码库回滚到上一个版本git reset --hard HEAD^^
: 往上回滚两次,以此类推git reset --hard HEAD~100
: 往上回滚100个版本git reset --hard 版本号
: 回滚到某一特定版本(前七位)
git checkout - xx
或git restore xx
: 将XX文件尚未加入暂存区的修改全部撤销git restore --staged xx
: 将xx从暂存区里移除git remote add origin git@git.github.com:xxxx/XXXX.git
: 将本地仓库关联到远程仓库git push -u(第一次需要-u以后不需要)
: 将当前分支推送到远程仓库git push origin barnch_name
: 将当前分支推送到远程仓库
git clone git@git.github.com:xxx/XXX.git
: 将远程仓库XXX下载到当前目录下git checkout -b barch_name
: 创建并切换到branch_name
这个分支git barnch
: 查看所有分支和当前所处分支git checkout barnch_name
: 切换到branch_name
这个分支git merge barnch_name
: 将分支branch_name
合并到当前分支上git barnch -d barnch_name
: 删除本地仓库的branch_name
分支git push --ser-upstream origin branch_name
: 设置本地的branch_name
分支对应远程仓库的branch_name
分支git barnch barnch_name
: 创建新分支git push -d origin barnch_name
: 删除远程仓库的branch_name
分支git pull
: 将远程仓库的当前分支与本地仓库的当前分支合并git pull origin branch_name
: 将远程仓库的branch_name
分支与本地仓库的当前分支合并
git barch --set-upstream-to=origin/barch_name1 barnch_name2
: 将远程的branch_name1
分支与本地的branch_name2
分支对应git checkout -t origin/barch_name
: 将远程的branch_name
分支拉取到本地git stash
: 将工作区和暂存区中尚未提交的修改存入栈中git stash apply
: 将栈顶存储的修改恢复到当前分支,但不删除栈顶元素git stash drop
: 删除栈顶存储的修改git stash pop
: 将栈顶存储的修改恢复到当前分支,同时删除栈顶元素git stash list
: 查看栈中所有元素
一个极简工作流
拉取remote后创建自己的分支
- git clone 拉取仓库
- git checkout -b my-feature
自己的分支产生修改
- git diff
- git add <changed_ file>
- git commit
- git push origin my-feature
当remote的主分支有变化时
- git checkout master
- git pull origin master
- git checkout my-feature
- git rebase master 同步master分支
- git push -f origin my-featrue
- 在remote 仓库 new pull request
- 主仓库经代码审查后squash and merge 并删掉 my-feature
- git checkout master
- git branch -D my-feature
- git pull origin master
ps : git log --oneline --graph --decorate --all 查看当前结构图
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Cele Strong'Blog!