- 对于公司项目在远端仓库没有任何东西的时候,咋们可以通过在本地创建好仓库,然后同步到远程的仓库,此时你可以做的是:
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:xiangcman/test.git
git push -u origin master
- 如果公司项目已经在远端仓库有代码的时候,此时你可以通过clone方式到本地:
git clone git@github.com:xiangcman/test.git
- 如果远程的仓库中不存在该分支,你此时想要在本地创建好分支后,然后提交到远程的仓库中:
git checkout -b dev1
git add .
git commit -m "创建了一个新的分支"
git push origin dev1
此时可以查看远端的仓库有哪些:
git branch -r
查看本地的仓库:
git branch
顺便来看下两个分支获取到的分支提交记录:
git log
从这里也看得出来两个分支提交的记录是dev1分支超前master分支的。
那下面就进行合并一次看看效果:
git merge origin/dev1
看到了没,此时master分支多了一条提交记录的。
git log --graph --pretty=oneline --abbrev-commit
该命令是可以查看分支提交的树状结构图的:
其实在用merge来合并的时候和rebase合并的时候没啥区别,只不过需要注意在合并时如果另一个分支有merge的记录,那么此时不会将该条merge的记录添加到该分支提交记录下。
- 如果远程的仓库中已经存在dev1分支,而你想要加载到本地中来,可以用到:
git checkout -b dev1 origin/dev1
如图所示:
其实这里很好理解,后面如果不跟origin/dev1的时候相当于创建了本地的dev1分支,并且切换到该分支下,后面跟了远程的分支后,表示和远程分支同步。
有种特殊情况,比如A提交的分支到远端仓库了,B这个时候想拉取远端的这个分支,此时B如果同样这么做,会出现无法识别的远远分支dev1,此时要做的是:
//第一步,git fetch命令
git fetch
//第二步
git checkout -b dev1 origin/dev1
-
冲突问题解决
一般遇到比较多的地方就是冲突问题了,这里演示下冲突问题的解决,冲突问题其实是两个人去修改同一个文件,然后直接去提交的时候,先pull代码就发生了这种情况。下面带大家看看:
截图这里模拟了甲这个人先提交了东西,等下已也会提交东西,但是已不知道甲改没改东西,所以已先没去pull,等到先commit后再去pull。
看到了图上当已去pull的时候发生conflict了,此时需要去修复冲突才能push。那么打开源文件:
上面标红的是已这个人刚刚提交的东西,下面是甲在之前提交的东西,此时需要去处理这个冲突,解决完冲突后,需要再次提交一次记录。提交了冲突后,才能再次push了。
冲突解决完了之后,我这里用到了git commit -a
跳到了vi模式下:
在vi模式下,我编辑了提交记录是合并冲突,关于不会用vi模式(先进入insert模式,快捷键是i+command,编辑完了之后,按esc退出编辑模式,再按:wq就可以保存该次提交的记录了)的可以百度网上怎么说。
最后提交成功:
一般这种合并冲突在实际项目中我是很少用的,因为上面解决冲突会产生一条解决冲突的提交记录,用得多的还是通过git rebase --continue
来解决冲突问题,流程是冲突解决完了后,通过git add .,然后再git rebase --continue
。
-
合并某次提交
之前在有家公司提到过该命令,主分支会合并某一次的提交代码,而不是整个分支的合并,下面演示下给大家看看:
上图第一处标红的是dev1分支上提交的记录,然后cherry-pick到master分支上了,但是合并到master分支上后,版本号会发生变化了。