赞
踩
feature
分⽀main
分支下新增func1
和func2
文件func1
,开发者B新增func2
$ vim func1 $ cat func1 fun1 from A $ git add . $ git commit -m "A push func1" [feature-1 84e77e0] A push func1 1 file changed, 1 insertion(+) create mode 100644 func1 $ git push origin feature-1 Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 20 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 318 bytes | 159.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:DieSnowK/Git-Learn.git 10cd204..84e77e0 feature-1 -> feature-1
$ cat func2 fun2 fron B $ git add . $ git commit -m "B push func2" [feature-2 31c8cbb] B push func2 1 file changed, 1 insertion(+) create mode 100644 func2 $ git push origin feature-2 Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 20 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 343 bytes | 343.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:DieSnowK/Git-Learn.git 10cd204..31c8cbb feature-2 -> feature-2 PS C:\Users\w1752\Desktop\My_Repository\Git-Learn>
$ git branch * feature-1 main $ git pull remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 323 bytes | 323.00 KiB/s, done. From github.com:DieSnowK/Git-Learn * [new branch] feature-2 -> origin/feature-2 There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> feature-1
feature-2
分支,并且和远端的feature-2
分支关联起来$ git checkout -b feature-2 origin/feature-2 Branch 'feature-2' set up to track remote branch 'feature-2' from 'origin'. Switched to a new branch 'feature-2' $ cat func2 fun2 from B $ vim func2 # Coding... $ cat func2 fun2 fron B fun2 Done from A $ git add . $ git commit -m "A edit func2 Done" [feature-2 2e279ac] A edit func2 Done 1 file changed, 2 insertions(+), 1 deletion(-) $ git push origin feature-2 Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 20 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 280 bytes | 280.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:DieSnowK/Git-Learn.git 31c8cbb..2e279ac feature-2 -> feature-2
main
中才算真正的开发完毕,流程如下
开发者A:
切换至main
,git pull
,保证本地main
是最新内容
切换至feature-1
分支,合并main
分支,有冲突就在feature-1
分支解决
切换至main
分支,合并feature-1
分支
将main
分支推送至远端
$ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. $ git pull Already up to date. $ git checkout feature-1 Switched to branch 'feature-1' $ git merge main Already up to date. $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. $ git merge feature-1 Updating 10cd204..84e77e0 Fast-forward func1 | 1 + 1 file changed, 1 insertion(+) create mode 100644 func1 $ cat func1 fun1 from A $ git push Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:DieSnowK/Git-Learn.git 10cd204..84e77e0 main -> main
开发者B:
切换至main
,git pull
,保证本地main
是最新内容
切换至feature-2
分支,合并main
分支,有冲突就在feature-2
分支解决
由于feature-1
分支已经merge
进来了新内容,为了保证feature-2
远程分支最新,最好在此时git push
一下
git push
的另一个原因是在实际的开发中,main
的merge
操作⼀般不是由我们⾃⼰在本地进进行,而是由审查人员进行merge
时,操作的肯定是远程分⽀,所以就要保证远程分⽀的最新merge
发生冲突,解决完冲突后需要commit
之后才能push
切换至main
分支,合并feature-2
分支
将main
分支推送至远端
$ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. $ git pull Already up to date. $ git checkout feature-2 Switched to branch 'feature-2' Your branch is up to date with 'origin/feature-2'. $ git merge main Merge made by the 'ort' strategy. func1 | 1 + 1 file changed, 1 insertion(+) create mode 100644 func1 $ ls SnowK.txt func1 func2 $ git status On branch feature-2 Your branch is ahead of 'origin/feature-2' by 2 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean $ git push Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 20 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 292 bytes | 292.00 KiB/s, done. Total 2 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:DieSnowK/Git-Learn.git 2e279ac..2250eeb feature-2 -> feature-2 $ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'. $ git merge feature-2 Updating 84e77e0..2250eeb Fast-forward func2 | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 func2 $ ls SnowK.txt func1 func2 $ git push Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:DieSnowK/Git-Learn.git 84e77e0..2250eeb main -> main
feature-1
和feature-2
分支都没用了,可以直接删掉了git branch -a
依然能看到git branch -a
发现很多在远程仓库已经删除的分⽀在本地依然可以看到git remote show origin
$ git remote show origin
* remote origin
Fetch URL: git@github.com:DieSnowK/Git-Learn.git
Push URL: git@github.com:DieSnowK/Git-Learn.git
HEAD branch: main
Remote branches:
main tracked
refs/remotes/origin/dev stale (use 'git remote prune' to remove)
refs/remotes/origin/test stale (use 'git remote prune' to remove)
Local branch configured for 'git pull':
main merges with remote main
Local ref configured for 'git push':
main pushes to main (up to date)
git remote prune origin
命令$ git remote prune origin
Pruning origin
URL: git@github.com:DieSnowK/Git-Learn.git
* [pruned] origin/dev
* [pruned] origin/test
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。