工作中使用git遇到的问题总结

 

背景

从九月中旬实习至今,开发中遇到了许多问题,最让我头痛的还是使用git进行协同开发。每次请求合并都战战兢兢,因为这个不仅关系到自己,一不小心还可能删掉别人已经上线的代码(没错,我干了这种蠢事)。每思至此,背脊发凉,特此对常用git操作进行一番总结。

备注:本文不讲原理性操作,只阐述工作中遇到的问题,并提供解决方案,想要了解git工作原理慎读

准备

工欲善其事必先利其器,首先我们要将本地仓库和远程仓库关联起来,分为两步

第一步:

配置个人信息

$ git config --global user.name "Buddhas" 
$ git config --global user.email "xxx@qq.com"

第二步:

配置ssh

在git命令行敲击 ssh-keygen -t  rsa -C “xxx.@yyy.zzz”,按照提示一步步输入所需要的信息,然后会在c:/Users/xxxx_000/.ssh/找到两个文件,id_rsa.pub和id_rsa。然后登录github,找到Settings→SSH kyes→Add SSH key,将id_rsa.pub内容复制过来,title自定义,到此我们的准备工作就完成了,下面重点谈一下git常用操作和遇到的问题

git常用操作及遇到的问题

由于需要和后台进行协同开发,避免不了需要共用代码,首先添加git源

添加源
git remote add origin git@gitlab.XXX.com:chenbin/XXX.git

 列出源中所有仓库


git branch -all

拉取别人代码

git clone git@github.com:Buddhas/XXX.git

举个例子,我们有开发分支37131,和测试分支test。

开发完成后提交操作

git add <filename> //提交到暂存区,如果需要全部提交则用.表示
git commit -m "XXX" //把暂存区的所有内容提交到当前分支
git push //将本地分支修改和远程分支同步

在此过程中我出现过的问题

如果想要撤销提交操作


git reset 文件名   表示撤销git add操作
git reset HEAD~1   表示撤销commit操作,保留更改
git reset --hard HEAD~1   表示撤销commit操作,撤销更改

如果不小心在其他分支上写了代码,比如我们的开发分支是37131,而我在test分支上做了修改(没错,我又干过这种蠢事)

git stash  //暂存当前内容
git checkout 37131 //切换到开发分支 git stash pop //将暂存的代码保存过来

当我们需要合并分支,首先切换到我们的test分支,然后进行合并

git checkout test
git merge 37131

在此过程中我遇到过的问题

如果需要取消合并

git merge --abort

如果发现test分支被无意修改过,想要同步远端test分支

git fetch -f root test  //拉取远程test分支,但不合并
git reset --hard root/test //修改本地test分支指向

如果说我们需要放弃本地修改,其实有两种方法可行

git checkout . //同步暂存区的代码
或者
git fetch --all //同步远端仓库代码
git reset --hard root/test

行文至此