git merge 冲突_git必备使用命令及其演示实例

git必备使用命令及其演示实例。

查看版本:git --version

3064369a2ddcee20fa8149cab3db4633.png

姓名和邮箱是作为版本提交时开发者的用户名和邮箱地址。

设置全局用户名和邮箱:

$ git config --global user.name  testName

$ git config --global user.name  testEmail

查看全局用户名和邮箱:

$ git config --global user.name

$ git config --global user.name

会保存在用户家目录的.gitconfig文件里。

查看用户名邮箱:$ cat ~/.gitconfig

dac068adf200d0205fa3a4ab3edad51a.png

清屏:按住ctrl按l

打开编辑文件:vim 文件路径

退出编辑::q

退出编辑(强制退出不保存)::q!

退出编辑并保存::x或者:wq

git初始化方式:

1,mkdir demo;cd demo;git init

2,git init demo

使用ssh安全方式连接代码仓库,需要输入用户名和密码。可以使用ssh密钥对实现无密码登陆ssh服务器。在拉取和推送代码时可不用输入用户名、密码:

ssh密钥对生成:

$ ssh-keygen -t rsa -C '邮箱号@qq.com'

查看密钥文件位置,在用户根目录的.ssh文件夹下:$ cd ~/.ssh

7604504e457960cacd4cfdbfc941f66d.png

b8ab463d9c5ddb675276fba84b99d8b8.png

.pub的是公钥文件,需上传到服务器的安全公钥key列表里面(可由运维人员添加):

3b0a7fa80010a4f68b975d23befc5780.png

0834c529cee1a7045314925fad4b0f0e.png

git是分布式版本控制器,克隆的是全部代码在本地仓库。比svn的所有代码只在服务器中安全。

git控制版本的几个步骤:

1,本地仓库。

1)创建文件,未跟踪状态untracked

92e9168caa58031383ddf4209cb92782.png

2)git add ./a.txt 把文件加入到使用git版本控制new file

cfc1ce2d817f2f3f66f6d1c92d98745e.png

3)撤销加入git控制:git reset HEAD a.txt

9da440a8cb46b0247375a51cda1f6581.png

4)加入好版本控制后提交到本地仓库:git commit -m ‘本次修改说明’

06c74e947eb4b729ae755d3be016694c.png

c70ebe28c4e4b21f2a68185dd481fc6a.png

5)撤销提交本地仓库:先找到提交的id:git log 是所有日志。

b1b52a6099a5b7bc8c051d7b13b16ee4.png

或者使用:git show 查看最近一次提交本地仓库日志:

6da8f774d5e7ccee7ac20e69105d23ba.png

或者看前两条日志:git log -2 。按q退出日志。

然后:git reset --hard baa40030(版本id)

4613b3b24eeb781fda9ccc83c90542e4.png

可以重新提交:修改了a.txt git add .  git commit -m 'update a.txt add text bbbb'

git log -2

10e5a9cce8e2d8a7de8a51b78573bfa0.png

git status

0e6dc480acba23d456c838285eb57a9f.png

6)推送本地仓库提交的版本到远程仓库:git push

cd81f2fa08712ef9e6b4be99c1b0ca34.png

7)远程基于master创建一个分支test:

b84370fd22914bc2ec07e85004292e0b.png

在本地随意在哪个分支上拉取:

84e92a23606e5d0d4aa01aeaad9366e2.png

都可以获得远程仓库新分支信息。

8)查看当前所在分支:git branch

eb8689da2bbe199ff402f68515b63524.png

9)本地创建分支(实际是基于当前所在分支创建的新分支):

e7d837ec430e35e0f00cd152d7eba558.png

3c763ff69142d125212c3e31a163ea6d.png

10)切换本地分支到本地test分支:

7e5770d891e9b9c06a294497438b7cde.png

git push 此时,是本地有test分支,远程也有test分支。会报错:

bcbd33bd58eaef20b7b80e2fdc4711c1.png

按照提示操作:

$ git push --set-upstream origin test

cc53565689f7e27944bde5505f99c9f5.png

a7916af7b683c802e4f3d7d6d9b65982.png

①上面是远端创建了一个分支,本地没有先拉取并切换到远端的分支到本地分支的情况。[其实也是可以的,最终以远端的分支为准来跟新,会加入本地的新代码内容]

下面再来远端创建新分支test3:

然后,本地随意哪个分支拉取:git pull

6224f0f1e45188625999d449203359da.png

直接切换即可:git checkout test3

0ad9bb6527b01cc77bd640d2d7ebfab5.png

test2是新本地创建的分支未推送到远程仓库过。

可以用git pull拉取,查看远程是否真的没有:

1a1002d5164a94d3c6dfdf5c31476790.png

也可以用git push,查看远程是否真的没有:

f25ac4a57263f45b7ed99e9bab9593f5.png

确实没有。

11)把本地新分支推送到远程仓库并创建分支:

$ git push --set-upstream origin test2

28def1e7f9d5858410b83313fe7d466b.png

12)test分支有t.txt

da46fa7c9547fac38cb4fe8dda66cc76.png

master分支没有t.txt:

9d3e2440244b25e6e0d28256c62d8b1b.png

假如别人提交了新代码到master分支。ma.txt

e4cb10864807576995695ba71c932b51.png

把新分支test中的新文件t.txt合并到主分支master:

先切换到对应分支,在对应分支使用merge,把merge后面的分支合并过去

8adb6849434d92b38fedb735d18d3c8a.png

ea0923b6a6bdb1a2f03a181d4ac04127.png

这即是把开发的分支合并到主分支去发布了。

13)如果master分支修改了a.txt:

bf7802fa0b3adf5ca66c673b7c8e111b.png

切换到test分支时,自动提示了:

c0f93674e8b752e1be9c748cc0860d90.png

test分支打开看也是确实自动修改了:

0ed30eba9aedc71889d22f5d9264cfd7.png

按理本来应该在其它分支是不会对a.txt修改的。这个现象先留给你研究是为啥?

也在test分支也修改了a.txt:

a5e314dfb49bb87afcd6a9ad7bb6dfd7.png

答案如下:

在master把修改的内容提交推送了:

$ git commit -m 'master second update a.txt '

fd5cccb51b08a4a4a343240554e13ad5.png

再切换到test分支查看a.txt:

8d7f2398b53742f540b4574fb5a31f9a.png

发现没有变化,说明这就对了。之前切换过来自动变了,是因为之前的修改没有提交,并不清楚修改的内容会记录在哪个分支。[实际上只需要修改内容提交本地仓库就不会在其它分支出出现]

此时在test分支修改a.txt

55a2d0bff5e28f103e1d09095f0a9ee5.png

提交到本地仓库:

dffef696d7fa6b21609a5e2a8029a9a4.png

此时推送到远程仓库的test,然后远程在master合并test时会发生冲突,效果等同于此刻在本地就把test合并到master一样。

为了解决冲突,可以先在本地把mater合并到test来。

a8be7b139a1f66717e339bd6c2777f15.png

解决冲突:在提示冲突的时候,直接cat对应冲突文件名查看

8a23dca81de29691940f19362401c17c.png

手动处理,以谁的修改为准,调整好后,保存:

ef74b50cd8414e15477ff028bd3069ee.png

修改为这样:

aba418fee0a34d6eb8814c88301c6fd0.png

保存退出,再来git merge master报错:

cbe6a30cfc3b5417c990995922b492d3.png

那是因为刚刚修改了没有提交,记得每次修改后都需要提交本地仓库:

7bf479a472c94efe03568c0bcf30442c.png

提交了之后就不用再merge了,因为刚才就是在merge并解决冲突并提交了。

6d9a7ec05aee381bc8806b716cc20aa2.png

直接推送:git  push

d41f4c1a4f1eaeb7087390b84e6e9764.png

有时本地的某个分支很久没未使用,现在需要使用,提交/推送发现冲突。可以先删除本地分支:

get branch -d test3

cdebf1c235f542674fb38164dcb56fd3.png

本地test3不在了,即使git pull也是一样:

f421e7629e60effa160804d90b2eab7e.png

没有关系,直接git checkout test3,远端分支就到本地来了:

d772b7e69fdde9d6a4ef30a80f40936d.png

至此,git必备使用命令及其实例演示完毕。每个地方都是手动敲打的。流程设计也是根据实际情况来操作的。在现实公司里会用到的流程。如果有没看懂的地方,接下心来,跟着流程一步步走,多看几遍,自然明白。

最后感谢大家点赞,赏赐,交流,有什么都可以在评论区交流。

eb24276429194b8012f927db1cf19e54.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值