在之前的项目中用的是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