之前我们分享了git代码克隆和本地上传,今天我们来看一下本地的一些操作。
拉取代码
如果远程仓库的代码有更新了,那我们需要用git pull 把远程的代码拉取到本地。
git pull 是git fetch和git merge两个命令的合并。正常情况下,我们先要git fetch,查看远程与本地的差异,然后决定是否合并。如果没有问题,就git merge到我们工作区。现在很少有用这么详细的,直接就是git pull。
冲突解决
如果遇到拉取过程中出现问题(通常是本地修改与远程的修改了同一个文件的同一个位置出现冲突)。我们怎么解决么?
我们先在远程的test1.txt文件一行文字,然后在本地也往test1.txt添加一行。这时,就出现冲突。这时候我们有三种方式来解决
1.将本地修改的代码,提交到本地的仓库上。然后再拉取代码
git commit -m"解决冲突" test1.txt
git pull origin master
手动解决冲突,是留本地的修改还是留远程修改的,视情况而定
2.有时候,我们本地的代码还不行提交。所以我们还可以用stash来缓存起本地修改。再去拉去远程代码。然后把缓存中的修改释放出。
git statsh // 缓存,可以看出我们添加的那一行信息没有了。因为我们修改的东西都被缓存起来了
git pull origin master // 拉去代码
git statsh pop // 释放缓存
手动解决冲突,是留本地的修改还是留远程修改的,视情况而定
3.还可以用git fetch 来解决,
这种方式我没有测试通过。就不介绍了。有兴趣的可以去学习。有上面两种方式,就足以应付日常工作中的问题了。
所有情况在解决完冲突,然后执行下面操作
git add test1.txt
git commit -m "解决冲突" test1.txt // 第一种情况,不用添加文件。需要把所有的文件都commit才可以(git commit -m "解决冲突")
git push origin master
至此,冲突解决完毕
提交代码
如果我们本地有修改的代码,想提交到远程分支上。那我们就需要git push。push之前,我们还需要git commit和一些辅助操作。
我们可以先用一张图,来说明一下会比较清楚
看完图,应该会比较清楚了,俗话说,留图不留种,xxxx万人捅~~~,哈哈,我们实操一下吧
实操之前。我们先看看几个概念
工作区:简单来说,就是我们写代码的目录下面。
暂存区:存放当前待提交的信息。
本地版本库:工作区下面有一个隐藏的目录.git,这个不算是工作区,这个就是我们本地的git版本库,这里面存放的当前仓库的一些配置和信息。
.git中几个文件的解析
.git/config(全局的配置在~/.gitconfig):存放仓库的一些配置信息.一般情况全局配置里没有什么就是存放的user信息。
.git/HEAD:存放的当前分支的信息
来,开始操作吧!!
为了方便演示,我们现在工作区域添加一个test2.txt的文件,修改test1.txt的文件。
git status
git add test1.txt test2.txt
git status
将文件添加到暂存区
git commit test1.txt test2.txt -m"学习git"
将文件从暂存区,提交到本地分支上
git push origin master
将修改的代码就推送到远程仓库里了,别人可以通过pull来拉去到本地。
至此,我们的提交代码就结束了
创建分支并推送到远程分支
我们在git上操作的时候,基本都是一些协作工作,既然是协作工作,所有的操作不能都在一个分支上操作。这时。我们就要学会创建分支。
首先,我们创建一个分支并切换到新分支
git branch newmaster // 创建分支
git checkout newmaster // 切换分支
// 可以合并成一个命令
// git checkout -b newmaster
新分支有了,只是在我们本地上。我们要推送到远程仓库上
git push -u origin newmaster // 另外一种命令 git push origin newmaster(本地分支名):newmaster(远程分支名)
注意:我们一定要加上-u操作。不加-u的话我们来看看有什么不同。我们再创建一个分支newmaster2,然后我们不加-u推送到远程分支上
切换到newmaster分支,执行git pull
没有问题
切换到newmaster2分支,执行git pull
出现问题了!你这样拉取代码的时候,必须要加上远程分支名称。
分支提交上去了,别人执行git pull(不能加远程分支名称)操作,就可以把新分支拉取到本地仓库上。
合并分支
分支多了,自然每个分支的提交都不一样。这样一来,我们要保证分支之间同步,我们就需要学会分支合并。
现在我们将master分支上的提交,合并到newmaster上。
首先我们先切到master分支,将该分支远程所有提交拉取到本地。然后切换到newmaster的分支上,执行git merge master,就实现了分支的合并。如果中间出现冲突,可以参照上面解决冲突的方法。
总结
git push和git pull都是我们日常中用的比较多的操作。整理一下,梳理思路。希望各位看官能多多支持。接下来会分享一下git回滚的相关知识。
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/866341.html