【转】git命令汇总

一、Git版本分支管理

以下是一个比较基本的分支管理示范,每个公司的项目管理运作不同,分支管理也有各自的特色,但万变不离其宗。

1) dev分支用于日常开发

2) 当有新版本需要发布时,把dev代码合并到release分支做集成测试,并等待发布

3) release分支进入bug修复阶段

4) 如果在release分支发现bug,那么在release分支进行修改,并使用git cherry-pick把修复bug的commit合并到release分支上

(cherry-pick与merge不同,它的合并是以commit为单位而非整个branch)

完成后,release分支上所有代码改动(除版本号之外)都应该已经合到了dev分支上

5) release分支测试完成后,发布到线上环境

6) 并且打上tag,合并到master分支上

7) 如果在线上出现bug,那么在master上hot fix修复

8) 出现hot fix并修复后,需要重新把hot fix的代码合并到dev以及release分支中去使代码保持一致

  

二、Git基本命令汇总

1.查看本地文件状态

git status  —-查看本地、本地仓库、缓存(stash)的文件修改状态 

—红色 代表本地工作空间的文件修改

—蓝色 代表提交到本地仓库中的文件(git add .)

2.切换版本/覆盖当前修改文件

git branch - 查看当前版本 

git branch -a 查看所有版本

git checkout XXX(版本名)  —-切换到远程库中XXX版本

git checkout filepath    —覆盖当前修改的文件

git checkout .           -覆盖当前所有修改文件

3.从远程库获取最新代码

git remote -查看远程库名称 

git remote -v   

git remote show XXX(远程库名)

git fetch — 从remote端拉取最新代码

git pull XXX(远程库名) XXX(分支名)  -把拉取的最新代码跟当前工作空间合并

git rebase —把远程拉回的代码和本地合并

4.缓存本地代码

当要切换到其它版本时,想保存在当前版本修改的文件:在切换前做

git stash   —-把本地修改过不需要提交的文件放入缓存

git checkout XXX(版本)   —切换库版本

切回原来的库,把文件从stash缓存中拿出来

git stash pop — 从缓存中拉出

5.提交远程库

git add .

git commit -m ''

git remote 查看远程关联名称

git push remote的名称 本地master

6.处理冲突 

git fetch 拉取最新工程

git pull XXX(远程库名) XXX(分支名)  -把拉取的最新代码跟当前工作空间合并

冲突产生后,去工作空间修改后,>>>新代码===老代码<<<,保留最终代码,删除提示符,重新提交。

7.把本次提交的内容提交到其他分支(比如发布时bug的修改)

git cherry-pick commitId

8.建议执行顺序

git status 查看修改状态

git checkout filename 放弃某文件的修改。

git stash 储存修改

git fetch 拉取最新工程

git rebase 与本地分支合并

git stash pop 弹出储存文件,此时新文件可能会与你的文件产生冲突,解决冲突。

git add filename 添加某个修改文件

git add . 提交所有加点

git reset HEAD filename 回滚指定文件,回滚所有加点:"git reset HEAD . "

git commit -m''

git push 本地remote远程分支名,本地分支名

例我的本地分支为master 远程remote 别名为 origin 则提交为git push origin master

9.切换HEAD

git reflog --查看HEAD记录

git reset --hard HEAD^       //切换到之前一个HEAD  

git reset --hard fad4462      // 切换到某个已经回退的HEAD

10.刪除 local branch

git branch -d <branch_name>

11.gitignore 全局配置忽略文件

git config --global core.excludesfile ~/.gitignore

如果只针对某个项目起作用,也可以把.gitignore放在跟.project同一目录下。 

12.git log 格式化显示

git log --pretty=oneline

git log --pretty="%h - %H - %an, %ar : %s"

git log --pretty="%h - %s"

git log -p 显示每次提交的内容差异

git -log --stat 显示简要的增改行数统计

13.git stash暂存

git stash     

git stash save -a 'msg'

git stash pop

git stash list

git stash apply stash@{id}

git stash drop stash@{id}

14.git reset回滚

--git reset --soft head^  回退最近一次commit的文件

--git add 提交到暂存区 

--git reset HEAD <file> 把暂存区里的文件撤销

--git reset --hard HEAD^ 把最近一次提交的文件回滚并覆盖

--git reset --hard <commit_id>

--git push -f 

15.git 只合并分支上某个commit(即sourceTree的遴选)

1.git checkout -b'feature' 切换到新分支

2.git reflog  找到需要遴选的<commit_id1> <commit_id2>

3.git cherry-pick <commit_id1><commit_id2> 把1、2的提交合并到新分支

4.提交并推送

同样可以用sourceTree的遴选功能实现

1.切换到需要遴选提交代码的分支

2.选中某些提交,右键选择遴选

3.推送分支

16.git patch补丁 可以删除某一个commit

1.git log –oneline 找到需要删除的<commit_id>,假如倒序是第7次提交

2.git format-patch -7 生成7个patch,这些patch是按提交时间生成的

3.git reset --hard <commit_id>   回退到第8次提交的<commit_id>

4.--git push -f 强制推送到远程

5.git am *.patch  移除0007-.patch,把其他应用提交

6.推送分支

17.git revert 回退某个commit提交

git revert <commit_id>  

区别于git reset,git revert是作为一个单独的commit提交

猜你喜欢

转载自www.cnblogs.com/wchw2008/p/10181695.html