文章目录
  1. 1. git操作流程
    1. 1.1. 开发前的配置
    2. 1.2. 开发中的操作
    3. 1.3. 合并分支与冲突处理
    4. 1.4. 特殊情况

git作为代码版本控制开发工具,实在是太方便了,非常实用,本文主要围绕在项目开发过程中git的实际操作,以此总结。

git操作流程

开发前的配置

首先和别人开始一个项目前,当然是需要在github或者其他git项目管理平台上创建一个项目,每个项目都会有它的SSHhttp的项目地址,通常会使用SSH地址。

使用

1
git clone git@github.com:xurna/animation-effect.git

先将远程代码复制下来,然后你还需要在本地创建你的公钥(SSH KEY),git平台上会有相关操作,不同平台的操作可能也不一样,按照提示操作即可(一般在setting中找到ssh key就可以设置)。

而这两者的区别在于:
在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地。这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者。否则你是无法添加SSH key的,另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置。

生成SSH key后,一开始还会让你配置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:

1
2
3
4
git config --global user.name [username]
git config --global user.email [email]

使用git config --list查看已设配置

配完这些后你就可以对项目进行操作并提交你的代码了。

开发中的操作

实际开发中其实我用到的git命令也不算太多,但基本上满足了开发的需求。
多人开发的项目通常需要建分支来管理代码,创建一个分支(这里需要注意的是,如果你已经创建了一个分支,又想再创建一个分支,那么最好先切换到master分支,然后再创建):

1
git branch subName

创建好分支后,你就可以“为所欲为”了,因为这不影响主分支(master)上面的代码。操作前先切换到自己的分支上:

1
git checkout subName

上面的新建一个分支并切换到新的分支这两步可以一步到位,效果一样:

1
git checkout -b subName

然后如果你对自己的分支代码进行操作,如果你改了某一部分代码,可以先提交到暂存区:

1
2
3
git add [filename]
或者全部修改过的文件提交
git add .

可以再提交到仓库:

1
git commit -m "提交代码的注释"

这个过程中你可以使用

1
git status

来查看每一步的状态,它会提示你下一步需要做什么。
如果你要提交到远程分支上的话,输入

1
2
git push origin subName(或者git push)
如果你是第一次提交,他会让你先设置一个操作,会有代码提示,按照它的操作完成就好,具体我忘了。。。

这样你的代码就提交到了远程分支上了。

合并分支与冲突处理

如果自己的代码没有问题,到了发布的时候,就可以和master合并分支了,先切换到master分支:

1
git checkout master

合并分支:

1
git merge subName

情况1. 如果在你提交之前,原来master上的代码其他人没有修改过,那么这个过程就进行地很顺利。
情况2. 如果master上的代码已经修改过了,git bash会提示你先更新的你的代码再合并分支:

1
git pull origin master

这里注意一点,git pull操作是可以在本分支上拉下最新的代码的,但是如果你要拉其他分支的代码,例如,你需要在subName分支上拉master的代码,那么,在subName分支上,不能单是执行git pull,而是执行git pull origin master,如果是在master分支上,则可以直接git pull,因为他本身对应的就是master分支。

情况3. 然后再使用上面的合并分支的命令,如果这个过程中提示有代码冲突,即别人修改了和你修改的一样的地方,这个时候,你需要手动删除,例如,在文件中会有:

1
2
3
4
5
6
7
8
9
<<<<<<< HEAD

test in master

=======

test in dev

>>>>>>> dev

其中“======”代表冲突区域分隔符,分隔符上下两段代码为你和别人都修改过的代码,你需要和别人协商最后要哪段代码,然后再删去那些符号。删掉后,再git commit代码,最后在git push上去。但是这样做不好,因为别人也需要在master上提交东西,自己直接在master上处理冲突的话,对于项目处理可能会出现问题,所以这个时候,可以考虑回退当前版本,在自己分支上处理冲突,最后再提交:

1
2
3
4
5
git reset --hard HEAD
git checkout subName
git pull origin master
然后手动处理冲突,处理完再commit上去,最后push上去。
最后再git checkout master,git pull,git merge subName,git push

所有情况解决后都需要在master分支上git push才算是真正提交合并了自己修改的代码。

特殊情况

如果你现在在做的一个需求还没有做完,然后产品经理那边又出了一个修改需求,需要先上线,那么此时你并不想提交你在做的这个需求代码,因为还没有完成,这种情况,你就可以在master上新建另一个分支去操作。注意,是切换到master上新建另一个分支,新建完后,如果它还有用处,那么可以保留它,注意,你并不需要再一次git clone一个项目下来,当你切换到不同分支的时候,代码会自动变到你的那个分支上,十分方便。
如果你用完觉得这个分支再也没有用处了,那么可以删掉本地分支:

1
git branch -d subName2

可以查看本地分支和远程分支:

1
2
git branch (查看本地分支)
git branch -a (查看远程分支)

如果你修改了某个文件,但是又放弃对这个文件的修改,你可以使用:

1
git checkout text.txt

如果你想回退到某个版本号的话,可以使用:

1
git reset --hard {版本号}

使用:

1
2
3
git log
或者
git reflog

可以查看历史版本号,Git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录。

好了,平时操作大多是这几类操作,如果后续有新的操作,再补进来吧。

对了,在master上合并完分支后切记要切回自己的分支,不然改的就直接是master的代码了!

文章目录
  1. 1. git操作流程
    1. 1.1. 开发前的配置
    2. 1.2. 开发中的操作
    3. 1.3. 合并分支与冲突处理
    4. 1.4. 特殊情况