基本命令
查看本地提交记录
git log
git log --pretty=one
检出分支
远程检出分支到本地(第一次检出)
git clone git@newtouch.gitlab.com.cn:XWLP/SERVICE/icp-web-interface.git icp-web-interface -b dev
git@newtouch.gitlab.com.cn:XWLP/SERVICE/icp-web-interface.git 远程上的链接
icp-web-interface 本地的项目名称
dev 远程的dev 分支
以当前所在的分支为基础,切出一个新的分支
git checkout -b devtest
分支名字为devtest
检出远程上的其他分支
git checkout -b dev_test origin/master
dev_test 检出后本地的分支名字,master 远程上需要检出的其他分支。
推送本地的一个新分支到远程服务
git push --set-upstream origin dev4
dev4是新分支的名称
分支操作
查看本地分支
git branch
比较两个分支
git diff dev devtest
dev,devtest
删除本地的master2分支
git branch -D master2
合并分支
直接合并某个commit
git cherry-pick da3a041919f
da3a041919f 可能是分支 A 上的提交记录,现在直接合并这个提交记录到分支B。
合并分支dev 到当前所在分支
git merge --squash dev
指定合并某个文件
方式一:直接copy文件
1.切换到需要合并的目标分支
2.进入到文件的路径
3.git checkout dev MTFileInportController.java
dev 合并的源分支
MTFileInportController.java 合并的文件
方式二:追加补丁到目标分支
1.切换到目标分支
2.进入到文件的路径
3.git checkout --patch dev MTFileInportController.java
将dev分支上 MTFileInportController.java 文件追加补丁到目标 分支上 MTFileInportController.java 文件。你可以接受或者拒绝补丁内容。
合并冲突
这个是遇到了树冲突。
文件名修改造成的冲突,称为树冲突。
一般发生树冲突的场景是:
比如,a用户把文件改名为a.c,b用户把同一个文件改名为b.c,那么b将这两个commit合并时,会产生冲突。
比如,a删除了文件,b又加上了文件等
目前的解决方案是 修改完一个完整版的文件,直接采用上面文件覆盖的方式。
网上的解决方案
引用:
https://blog.csdn.net/mad1989/article/details/16885569
git pull 也会引起冲突
git pull实际上是 git fetch 和 git merge 两个命令组合。git fetch 从远程拉数据到本地不会自动进行merge操作,而pull则是fetch和merge的串行组合。
第一种方法,本地提交后再进行merge操作。
git commit -m "log内容" git merge
这样提交后再去merge可能需要处理冲突
git reset --hard
git pull
配置用户
$ git config --global user.name "xiaowang" $ git config --global user.email "xiaowang@xxxxxh.cn" 生成相关ssh key ssh-keygen –t rsa –C xiaowang 在当前系统用户目录(xxx/.ssh/)下会生成相关公钥和私钥文件id_rsa,idrsa.pub将公钥打开并复制到gitlab网站的sshkey配置下。
查看远程分支
git remote -v
git remote add tfs XXXX(http://)
git push tfs dev | git push -u origin --all
git branch -a 查看所有的分支