git实战笔记

  • 对于公司项目在远端仓库没有任何东西的时候,咋们可以通过在本地创建好仓库,然后同步到远程的仓库,此时你可以做的是:
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:xiangcman/test.git
git push -u origin master
  • 如果公司项目已经在远端仓库有代码的时候,此时你可以通过clone方式到本地:
git clone [email protected]:xiangcman/test.git
  • 如果远程的仓库中不存在该分支,你此时想要在本地创建好分支后,然后提交到远程的仓库中
git checkout -b dev1
git add .
git commit -m "创建了一个新的分支"
git push origin dev1

此时可以查看远端的仓库有哪些:

git branch -r
image.png

查看本地的仓库:

git branch
image.png

顺便来看下两个分支获取到的分支提交记录:

git log
git实战笔记_第1张图片
image.png

从这里也看得出来两个分支提交的记录是dev1分支超前master分支的。
那下面就进行合并一次看看效果:

git merge origin/dev1
git实战笔记_第2张图片
image.png

看到了没,此时master分支多了一条提交记录的。

git log --graph --pretty=oneline --abbrev-commit

该命令是可以查看分支提交的树状结构图的:


image.png

其实在用merge来合并的时候和rebase合并的时候没啥区别,只不过需要注意在合并时如果另一个分支有merge的记录,那么此时不会将该条merge的记录添加到该分支提交记录下。

  • 如果远程的仓库中已经存在dev1分支,而你想要加载到本地中来,可以用到:
git  checkout -b dev1 origin/dev1

如图所示:


image.png

其实这里很好理解,后面如果不跟origin/dev1的时候相当于创建了本地的dev1分支,并且切换到该分支下,后面跟了远程的分支后,表示和远程分支同步。

有种特殊情况,比如A提交的分支到远端仓库了,B这个时候想拉取远端的这个分支,此时B如果同样这么做,会出现无法识别的远远分支dev1,此时要做的是:

//第一步,git fetch命令
git fetch

//第二步
git  checkout -b dev1 origin/dev1
  • 冲突问题解决
    一般遇到比较多的地方就是冲突问题了,这里演示下冲突问题的解决,冲突问题其实是两个人去修改同一个文件,然后直接去提交的时候,先pull代码就发生了这种情况。下面带大家看看:


    git实战笔记_第3张图片
    image.png

    截图这里模拟了甲这个人先提交了东西,等下已也会提交东西,但是已不知道甲改没改东西,所以已先没去pull,等到先commit后再去pull。


    git实战笔记_第4张图片
    image.png

    看到了图上当已去pull的时候发生conflict了,此时需要去修复冲突才能push。那么打开源文件:
    git实战笔记_第5张图片
    image.png

上面标红的是已这个人刚刚提交的东西,下面是甲在之前提交的东西,此时需要去处理这个冲突,解决完冲突后,需要再次提交一次记录。提交了冲突后,才能再次push了。

冲突解决完了之后,我这里用到了git commit -a跳到了vi模式下:

git实战笔记_第6张图片
image.png

在vi模式下,我编辑了提交记录是合并冲突,关于不会用vi模式(先进入insert模式,快捷键是i+command,编辑完了之后,按esc退出编辑模式,再按:wq就可以保存该次提交的记录了)的可以百度网上怎么说。
最后提交成功:
git实战笔记_第7张图片
image.png

一般这种合并冲突在实际项目中我是很少用的,因为上面解决冲突会产生一条解决冲突的提交记录,用得多的还是通过git rebase --continue来解决冲突问题,流程是冲突解决完了后,通过git add .,然后再git rebase --continue

  • 合并某次提交
    之前在有家公司提到过该命令,主分支会合并某一次的提交代码,而不是整个分支的合并,下面演示下给大家看看:


    git实战笔记_第8张图片
    image.png

    上图第一处标红的是dev1分支上提交的记录,然后cherry-pick到master分支上了,但是合并到master分支上后,版本号会发生变化了。

更多学习git前往这里

你可能感兴趣的:(git实战笔记)