git 常用命令总结(二)


以下情况都是在本地修改代码完,commit 提交到本地仓库后遇到的情况,也就是最后的 push 没有成功引起的操作

① 不同账号修改了不同文件

  当前其他账户提交了修改后,本地分支与远程分支之间就不是 fast-farwards了,所以需要先获取远程分支最新 commit ID再合并,操作如下:

	// 方式一,这个时候可以保证远端分支的 commit 就是线性的,然后本地 commit id 会被改变
  ① git fetch origin/master
    git pull  origin/master
  	git rebase origin/master
  	
  	// 方式二,保持本地 commit id 不变,与远端分支合并,这个时候远端分支的节点看起来就不是一条直线了
  ② git  pull origin/master
    git  merge origin/master
   

最后再 git push

② 不同账号修改了同一个文件内容

  这种情况就比较麻烦了,因为要手动合并修改的内容,但是在工作中又经常遇到。此时通常已经先通过 git commit -am 提交到本地分支了,只是最后一步的 git push 失败了。后续操作如下:

 // 先 pull 获取远程仓库最新代码,此时会提示有冲突的文件
  git pull
 // 此时通过 vim 或者 git diff 文件名打开文件,也可以在外部用notepad++打开有冲突的文件
   <<<<<<<<<HEAD
   //这之间为当前账号修改的内容
   =========
   //这之间为其他账号修改的内容
   >>>>>>>>

  此时与其他同事沟通确定保留哪些内容, 修改后再提交和推送远程仓库。

  git commit -am "merge some conflict code"
  
  //检查一下工作区
  git status 

最后再 git push

③ 不同账号修改了同一个文件的文件名

	//先更新
	git pull
	
	//此时会出现其他账户和当前账户修改文件名后的文件, 需要通过 add 或者 rm 确定最终保留的文件
   ls -al
   git add 保留文件名
   git rm  丢弃文件名
  
 	//检查一下工作区
   git status

	//提交解决的冲突
	git commit -am "reslove file name conflict" 

最后再 git push

④ 将指定文件回退到指定版本

	//先查看指定文件的历史版本ID
	git log filename
	例如查看file目录的 readme.txt:
	git log file/readme.txt
	
	// 复制想要恢复的版本 commitID, 然后checkout
	git checkout ${
    
    commitID} file/readme.txt
	
 	//检查一下工作区, 看看是否确定更新了
    git status

	//提交解决的冲突
	git commit -am "resume file/readme.txt" 

最后再 git push

⑤ git push 需要指定分支名

  git push 时提示以下信息:

fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:master

To push to the branch of the same name on the remote, use

    git push origin HEAD

此时需要指定当前分支远程分支的链接

 git branch --set-upstream-to=origin/master
 //origin/master为远程仓库的分支

⑥ 撤销 commit 中的部分文件

  某些时候通过 git commit -am"xxx" 命令提交时不小心把一些配置文件给一起 commit 了, 假如要撤销部分 commit 的文件, 那么操作如下:
a、先找到对应文件的 log

 git log <filename>

b、回退目标文件至上一个版本

 git reset <commitID> <filename>

c、更新一下目标文件

 git checkout filename
 // 或者想把某个文件回退到指定版本
 git checkout <commitID> <filename>

d、修改 commit 信息

 git commit --amend

最后再 git push

⑦克隆仓库 拉取代码时提示权限不够

  用同事的电脑登录自己的 gitlab 账号就出现这个问题了。通过在仓库地址前加上用户名来解决,这个时候会提示输入用户名密码,正确输入密码后即可克隆仓库拉取代码。示例如下:

//假设地址为
http://192.168.xxx.xxx/xxx.git

//那么添加用户名后的拉取方式为:
git clone http://uesrname@192.168.xxx.xxx/xxx.git
git pull

猜你喜欢

转载自blog.csdn.net/PX1525813502/article/details/127000688