目录
Github上建立远程仓库
本地库rootA
- 在本地库rootA中创建一个文件file1.txt,并对文件中的内容进行修改。
- 使用git status查看当前状态。
- 将文件提交到暂存区-->提交到本地库-->提交到远程库。
可以看到此时远程库中main分支下存在文件file1.txt
本地库rootB
采用上述同样方法,向远程库最终提交文件file2.txt。
但是此时本地库rootA只有文件file1.txt,只有使用git pull拉取远程库中的最新内容,才能同步。
git pull拉取,拉取最新内容后,可以看出此时本地库rootA中同时存在file1.txt和file2.txt两个文件。
冲突的产生与管理
- rootA中对file1进行修改后,使用git add将修改提交到暂存区,再采用git commit -m "描述"将暂存区中的文件提交到本地库,此时不提交到远程库中。
- rootB同样对file1进行修改,但是修改后直接 提交到暂存区-->提交到本地库-->提交到远程库。
- 此时再将rootA中对file1的修改提交到远程库,发生冲突!如下图示:
- 使用git fetch 获取远程库上main分支的文件。
与git pull不同的是,git fetch在将远程库中对应分支的内容获取到本地后,不会直接与本地对应分支合并,需要调用git merge才能将其合并。
- 使用git diff orgigin main[远程分支] main[本地分支] 查看冲突部分的内容。
- 使用git merge 远程分支 本地分支 将两个分支的内容合并。
合并完的冲突文件如下:
冲突双方可以商量后重新提交。
此处rootA保留冲突双方的内容,使用git status可以看到有文件未提交到暂存区,因此修改file1的内容后, 提交到暂存区-->提交到本地库-->提交到远程库,如下图示:
此时冲突解决,重新提交成功!!!
分支操作
- git branch查看当前已有分支。
- git branch dev1创建新的分支dev1。
- git checkout dev1切换到dev1分支中。
- touch log1.txt在dev1分支中新建文件夹。
- 提交到暂存区-->提交到本地库-->提交到远程库。
此时远程库GitHub中存在如下两个分支:
其中分支main中只有file1.txt和file2.txt两个文件,而分支dev1中有file1.txt、file2.txt和log1.txt三个文件。因为在创建dev1分支时,会对main分支进行快照。
此时可以采用git merge main dev1,将两个分支文件合并后再git push提交。
不行的话就采用如下(可能是我卡了,才会出现上面操作不行):
- git fetch origin main拉取远程库中的main分支。
- git diff查看远程库origin main与本地库main的区别。
- git merge origin main[远程库] main[本地库]合并远程库mian分支和本地库main分支。
- git push提交本地库main。