首页 > 其他 > 详细

4、Git多人单分支集成协作时的常见场景

时间:2019-03-28 22:38:08      阅读:128      评论:0      收藏:0      [点我收藏+]

1.1、不同人修改了不同文件如何处理

# user: git本地使用laowang,github使用dy201
# 本地clone一个仓库 git_learning_02 k@k
-PC MINGW64 /user/dy201/101-GitRunner $ git clone git@github.com:dy201/git_learning.git git_learning_02; Cloning into git_learning_02... Enter passphrase for key /c/Users/k/.ssh/id_rsa: remote: Enumerating objects: 38, done. remote: Counting objects: 100% (38/38), done. remote: Compressing objects: 100% (16/16), done. remote: Total 38 (delta 7), reused 32 (delta 7), pack-reused 0 Receiving objects: 100% (38/38), 4.39 KiB | 179.00 KiB/s, done. Resolving deltas: 100% (7/7), done. # 查看 git_learning_02 分支情况 $ git branch -va * master 65ac276 Merge remote-tracking branch github/master remotes/origin/HEAD -> origin/master remotes/origin/css-fix c412e25 Backgroud: orange -> green remotes/origin/feature/add_git_commands 65ac276 Merge remote-tracking branch github/master remotes/origin/master 65ac276 Merge remote-tracking branch github/master remotes/origin/temp e722d48 second time vim # 依赖远端创建feature/add_git_commands分支并切换到该分支 $ git checkout -b feature/add_git_commands origin/feature/add_git_commands Switched to a new branch feature/add_git_commands Branch feature/add_git_commands set up to track remote branch feature/add_git_commands from origin. # update该仓库内容(user是github的用户) $ git status On branch feature/add_git_commands Your branch is up to date with origin/feature/add_git_commands. Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: readme.md #将本地修改push到远端 $ git push Enter passphrase for key /c/Users/k/.ssh/id_rsa: Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 316 bytes | 39.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:dy201/git_learning.git 65ac276..d83a5b6 feature/add_git_commands -> feature/add_git_commands # 切换到本地仓库 git_learning k@k-PC MINGW64 /user/dy201/101-GitRunner/git_learning (master) $ git branch -av css-fix c412e25 Backgroud: orange -> green * master 65ac276 Merge remote-tracking branch github/master temp e722d48 second time vim remotes/github/css-fix c412e25 Backgroud: orange -> green remotes/github/master 65ac276 Merge remote-tracking branch github/master remotes/github/temp e722d48 second time vim remotes/zhineng/temp e722d48 second time vim # fetch远端仓库 $ git fetch github Enter passphrase for key /c/Users/k/.ssh/id_rsa: remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0 Unpacking objects: 100% (3/3), done. From github.com:dy201/git_learning * [new branch] feature/add_git_commands -> github/feature/add_git_commands # 根据远端仓库,创建新分支 $ git checkout -b feature/add_git_commands github/feature/add_git_commands Switched to a new branch feature/add_git_commands Branch feature/add_git_commands set up to track remote branch feature/add_git_commands from github. # 修改 git_learning的index, _2的readme.md # _02的push到远端 k@k-PC MINGW64 /user/dy201/101-GitRunner/git_learning_02 (feature/add_git_commands) $ git push Enter passphrase for key /c/Users/k/.ssh/id_rsa: Enter passphrase for key /c/Users/k/.ssh/id_rsa: Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 307 bytes | 61.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:dy201/git_learning.git d83a5b6..b6b96cc feature/add_git_commands -> feature/add_git_commands #将git_learning的新分支push到远端 k@k-PC MINGW64 /user/dy201/101-GitRunner/git_learning (feature/add_git_commands) $ git push github Enter passphrase for key /c/Users/k/.ssh/id_rsa: To github.com:dy201/git_learning.git ! [rejected] feature/add_git_commands -> feature/add_git_commands (fetch first) error: failed to push some refs to git@github.com:dy201/git_learning.git hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., git pull ...) before pushing again. hint: See the Note about fast-forwards in git push --help for details. # fetch远端的仓库 k@k-PC MINGW64 /user/dy201/101-GitRunner/git_learning (feature/add_git_commands) $ git fetch github Enter passphrase for key /c/Users/k/.ssh/id_rsa: remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. Unpacking objects: 100% (3/3), done. remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0 From github.com:dy201/git_learning d83a5b6..b6b96cc feature/add_git_commands -> github/feature/add_git_commands # 查看分支情况 $ git branch -av css-fix c412e25 Backgroud: orange -> green * feature/add_git_commands 47dad32 [ahead 1, behind 1] test different user to update the same project master 65ac276 Merge remote-tracking branch github/master temp e722d48 second time vim remotes/github/css-fix c412e25 Backgroud: orange -> green remotes/github/feature/add_git_commands b6b96cc fix readme.md remotes/github/master 65ac276 Merge remote-tracking branch github/master remotes/github/temp e722d48 second time vim remotes/zhineng/temp e722d48 second time vim #分支进行合并 k@k-PC MINGW64 /user/dy201/101-GitRunner/git_learning (feature/add_git_commands) $ git merge github/feature/add_git_commands Merge made by the recursive strategy. readme.md | 2 ++ 1 file changed, 2 insertions(+) # push到github k@k-PC MINGW64 /user/dy201/101-GitRunner/git_learning (feature/add_git_commands) $ git push github Enter passphrase for key /c/Users/k/.ssh/id_rsa: Enumerating objects: 9, done. Counting objects: 100% (8/8), done. Delta compression using up to 4 threads Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 633 bytes | 70.00 KiB/s, done. Total 5 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To github.com:dy201/git_learning.git b6b96cc..9ecaa51 feature/add_git_commands -> feature/add_git_commands

 

1.2、不同人修改了同文件的不同区域如何处理

# 修改 02的 index

# 修改    的 index

# 提交 git_learning 到 github
k@k-PC MINGW64 /user/dy201/101-GitRunner/git_learning (feature/add_git_commands)
$ git push github
Enter passphrase for key /c/Users/k/.ssh/id_rsa:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 300 bytes | 75.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To github.com:dy201/git_learning.git
   9ecaa51..decebd1  feature/add_git_commands -> feature/add_git_commands

# 先fetch 后merge (遇到了问题,根据提示直接pull)
$ git merge origin/feature/add_git_commands
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

#读取 index文件(内容正确)
$ cat index.html
this is a index.html

this is second time

this third time : diff between commit and HEAD

<<<<<<< HEAD
02 -> non fast forward
=======
test different user to update project!

   ->  non fast forward
>>>>>>> origin/feature/add_git_commands


# push到远端
$ git push
Enter passphrase for key /c/Users/k/.ssh/id_rsa:
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 701 bytes | 116.00 KiB/s, done.
Total 6 (delta 4), reused 0 (delta 0)
remote: Resolving deltas: 100% (4/4), completed with 2 local objects.
To github.com:dy201/git_learning.git
   decebd1..783e619  feature/add_git_commands -> feature/add_git_commands

 

1.3、不同人修改了通文件的同一区域如何处理

# pull 后产生一个状态
$ git status
On branch feature/add_git_commands
Your branch and github/feature/add_git_commands have diverged,
and have 1 and 3 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)

        both modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

# 进行提交后,进行push

 

1.4、同时变更了文件名和文件内容如何处理

 

1.5、把同一文件改成不同的文件名如何处理

4、Git多人单分支集成协作时的常见场景

原文:https://www.cnblogs.com/ooii/p/10616684.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!