工作中常用的Git/Repo 命令

在之前的项目中用的是Git,常用的命令如下:

1) Git clone

2)git fetch origin

3)git  reset --hard origin/XYZ

4) git status  ./

5) git  add ./

6) git  commit    git commit --amend

7) git push origin master:refs/for/master

8) git branch -a 

9) git checkout -b  XYZ  origin/XYA   //创建新分支XYZ,并切换到新分支XYZ上

10) git checkout  XYZ  //切换分支到XYZ上

11) git checkout -D XYZ    //删除分支XYZ

12) git blame  abc.cpp    //这个命令挺好,可以看到谁改的代码

13)   git merge --squash // squash 是挤压的意思,这个命令可以合并多条commit

        例如在dev分支上你创建了自己的开发分支my-feature,你在以后几天的开发中做了多条commit,功能基本开发完成后要把my-feature分支代码合并到dev分支上,这时你又想这在dev分支上产生一次commit信息,而不是你在my-feature分支上的多条commit。那么你用git merge --squash就可以了。注意这个命令后,要git commit 进行提交,这时会弹出编辑器,让你对多条commit信息进行修改。

14)git rebase -i   // 这个命令也可以在my-feature分支上合并多条commit。 运行这条命令后会弹出编辑器,让你选择要做的动作,一般第一条commit选择pick,之后的commit选择

        squash。这样就能合并多条commit了。合并完之后了,git checkout dev分支上,再git cherry-pick  my-feature ,这样就把合并后的多条commit,合入到dev分支了。git log看一下,只有一条commit,而不是my-feature分支的多条commit。

15)设置git log 时间显示格式

        git log 默认时间是这么显示的:Thu Aug 16 17:44:32 2018 +0800   可以改为这么显示:2018-08-23T17:16:39+08:00  

        git config --global log.date iso-strict-local

        git log 显示的更好看一点可以这么做:

         git log --pretty=format:'%h %ad | %s%d [%an]' --graph  

        看着这么一串每次输入太麻烦了,加入到配置文件.gitconfig  中就可以了,例如:

        hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph  

        以后 git hist 就行了

16)git log --stat 显示修改的文件,显示如下:

        src/config/router.config.js | 3 ++-

        1 file changed, 2 insertions(+), 1 deletion(-)

17)回退远程分支到指定版本

        先更新一下本地分支,使其和远程分支同步,然后git log 看一下要回退的指定版本哈希值

        然后git reset --hard  xxx ,这样就把本地分支回退到指定的版本了,然后再强推到远程分支就可以了:git push  -f  。 注意git push 的时候一定要加-f 

       这种回退方法会把指定版本之后所有的提交都搞掉了。如果还想保留指定版本之后的所有提交,则可以用git revert 命令。

       git revert -n  xxx , 然后git add , git commit 如果有冲突的话得解决冲突。 最后git push,这时就不用加-f了。因为这时新生成了一个commit,本地分支比远程分支新。

       就像我们做了一个新提交一样。

18)把本地分支推到远程分支,且本地分支和远程分支关联

       git push gitlab  --set-upstream  xxx          //xxx是你的本地分支名称

       git branch --set-upstream-to=gitlab/xxx  xxx  //本地分支和远程分支进行关联

19)删除远程分支

       git push origin --delete [branchname]

20)  给分支重命名

       git branch -m oldName newName

21)修改远程分支名字

       首先 git branch -m 旧分支名 新分支名

        其次 git push --delete origin 旧分支名

        将新分支名推上去 git push origin 新分支名

        将新本地分支和远程相连 git branch --set-upsteam-to origin/新分支名

22)  需求开发流程

开发需求
从origin代码库release分支新拉需求分支(git checkout -b DSG-feature)
可能需求比较大,开发一部分后先本地commit
git add . -A
git commit
继续开发需求,用以下命令去追加(保证一个需求只有一个commit)
git commit --amend --no-edit 

提测
先更新origin/dev_test分支(git pull), 再cherry-pick 到dev_test分支
git cherry-pick  commit-id(哈希值)
这时如果有冲突先解决冲突,解决完冲突后
git  add . -A  
git cherry-pick --continue (注意在弹出commit信息中要把commit-id删掉)
git push origin HEAD:refs/for/dev_test  提交gerrit review

解决测试中出现的问题
在需求分支DSG-feature 修改,修改完后
git  add . -A  
git commit --amend --no-edit
然后重复步骤2

上线
更新origin库中的release分支(git pull),新建需求分支DSG-feature-done 
把DSG-feature 中的commit  cherry-pick 到新需求分支DSG-feature-done
如果有冲突,解决冲突
把新分支DSG-feature-done 提交gerrit review 
git push origin HEAD:refs/for/release  

1)git clone http://xxx.git
2)git checkout -b  dev  origin/dev
3)git branch -D master
4)git remote add gitlab http://xxx.git

5)git fetch gitlab
6)git checkout -b master gitlab/master

       

     

        

现在项目中用repo了, 有点不适应,目前常用的命令如下:

1)  repo sync -c    

2)  repo rebase

3)  repo upload . --cbr   //只想上传当前检出的git分支,可以使用标志--current-branch (or --cbr 简写)

4)repo forall -c 'git reset --hard HEAD; git clean -dfx'; repo sync -cdj16;   //彻底同步服务器上的代码,对所有子项目进行了操作

     比较慢,但好用

欢迎补充,谢谢

其他的都是进入到对应的子项目中用git来操作

经常 repo sync -c    后出现 is published (but not merged) and is now N commits behind   错误

从网上搜索到 用 repo rebase就解决了。

下载网站内容:

 wget --mirror -p --convert-links -P ./  https://v2.vuejs.org/index.html
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值