git版本管理软件——git分支管理
2017-09-07 09:32
435 查看
代码添加到一定阶段,就需要创建分支管理,比如新加一个功能,但有想功能能不影响主线代码的开发,就可以将主线开一条分支,分支的功能和主线一模一样,在分支上新加和测试功能,功能添加成功后,就可以将该功能的分支合并到主线上面去。也可以将分支创建成稳定版,测试版等多条分支的基本功能可以同步开发。还可以为修复bug创建分支,代码主干有bug,但修复时间长,主干还要继续开发。这时就在主干开出一条bug分支,主干照常添加功能,bug分支则修复bug,等修复完之后,将bug分支合并到主干上面就可以了。
git分支管理流程图
一个项目,不同的人负责不同的分支功能,由一个管理员负责合并分支。
git分支 git branch
分支可以将当前开发的代码根据开发项目的不同划分成的不同版本,在分支中开发,不会影响主干master的代码也不影响其他分支的进行,在开发一个新功能时,应在一个新的分支上开发,调试完成后,确认没有问题,可以将该分支的新功能合并到主干master中。在分支开发中,为了不影响进度,也可以为分支更新。比如主干master添加了一项大众的功能或者修补了某个漏洞,也可以通过分支的命令,将主干的改动同步到分支中,分支和主干是各自独立的,分支的代码也可以同步到主干中。
创建git分支 git branch branchname
命令:git branch branchname
创建分支很简单,仅仅输入git branch + 分支名就可以,代码版本中的所有分支可以通过git branch来查看,查看该代码库中所有本地和远程的分支可以通过命令git branch -a来查看。
命令:git branch -a
ghost@ghost-machine:~/project$ git branch -a * master v1.1 v1.2 v1.3 remotes/origin/master ghost@ghost-machine:~/project$
跳转分支 git checkout branchname
git checkout branchname
git checkout有很多功能,其中在后面输入分支名后就是检出git分支功能,也就是跳转功能。
ghost@ghost-machine:~/project$ git checkout v1.1 切换到分支 'v1.1' ghost@ghost-machine:~/project$ git branch master * v1.1 v1.2 v1.3 ghost@ghost-machine:~/project$
如果分支是新建的,在跳转到该分支之后,分支的进度与主干master一样,跳转之后可以在该分支修改代码,添加功能、修复漏洞和测试,此时修改后的代码仅仅在该分支有效,与主干无关,代码修改不影响主干,如果主干需要改动,也可以通过git checkout master命令跳回主干,主干的代码和跳到分支之前的一样,分支上的改动还原回主干的代码。其实主干就是一个命名为master的分支,在git clone的默认状态下,git会默认下载主干master分支。
修改分支名字 git branch -m
命令:git branch -m old_branch_name new_branch_name
修改名字的效果如下。
ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git branch * master v1.1 v1.2 v1.3 ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git branch -m v1.3 vtest ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git branch * master v1.1 v1.2 vtest ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$
删除分支 git branch -d
命令:git branch -d branch_name
删除分支的效果如下
ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git branch -d delete_branch 已删除分支 delete_branch(曾为 8602795)。 ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$
推送分支 git push
在本地将分支创建好后,使用git push想把分支推送到远程仓库中,但是会发现显示的是Everything up-to-date,原因是远程仓库默认的分支是master,所以master没有改变就没有推送的必要,这时需要推送的另一个命令,将分支推送给远程仓库。命令:git push origin branch_name
效果如下。
ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git push Everything up-to-date ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git push origin v1.1 Total 0 (delta 0), reused 0 (delta 0) To /home/ghost/warehouse/Project_test.git/ * [new branch] v1.1 -> v1.1 ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git push origin v1.2 Total 0 (delta 0), reused 0 (delta 0) To /home/ghost/warehouse/Project_test.git/ * [new branch] v1.2 -> v1.2 ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git push origin vtest Total 0 (delta 0), reused 0 (delta 0) To /home/ghost/warehouse/Project_test.git/ * [new branch] vtest -> vtest ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$
也可以全部推送
命令:git push origin –all
效果如下
ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git branch v1.4 ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git branch v1.5 ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git push origin --all Total 0 (delta 0), reused 0 (delta 0) To /home/ghost/warehouse/Project_test.git/ * [new branch] v1.4 -> v1.4 * [new branch] v1.5 -> v1.5 ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$
获取远程分支git pull
本地仓库上的分支情况如下ghost@ghost-machine:~/workspace/test/Project_test$ git branch * master ghost@ghost-machine:~/workspace/test/Project_test$
远程仓库上有分支,查看的方法如下。
使用命令:git branch -a
ghost@ghost-machine:~/workspace/test/Project_test$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/v1.1 remotes/origin/v1.2 remotes/origin/v1.4 remotes/origin/v1.5 remotes/origin/vtest ghost@ghost-machine:~/workspace/test/Project_test$
1、获取远程分支
直接切换到该分支
ghost@ghost-machine:~/workspace/test/Project_test$ git checkout v1.1 分支 v1.1 设置为跟踪来自 origin 的远程分支 v1.1。 切换到一个新分支 'v1.1' ghost@ghost-machine:~/workspace/test/Project_test$ git checkout v1.2 分支 v1.2 设置为跟踪来自 origin 的远程分支 v1.2。 切换到一个新分支 'v1.2' ghost@ghost-machine:~/workspace/test/Project_test$ git branch master v1.1 * v1.2 ghost@ghost-machine:~/workspace/git_test$
2、获取远程分支的所有历史文件,并创建新的分支
获取远程的分支命令如下:
git pull origin origin_branch_name:local_branch_name 或 git fetch origin origin_branch_name:local_branch_name
从远程的origin仓库的origin_branch_name分支下载到本地并新建一个分支local_branch_name
ghost@ghost-machine:~/workspace/test/Project_test$ git pull origin v1.1:vzxtest1 来自 /home/ghost/warehouse/Project_test * [新分支] v1.1 -> vzxtest1 Already up-to-date. ghost@ghost-machine:~/workspace/test/Project_test$ ghost@ghost-machine:~/workspace/test/Project_test$ git fetch origin v1.2:vzxtest2 来自 /home/ghost/warehouse/Project_test * [新分支] v1.2 -> vzxtest2 Already up-to-date. ghost@ghost-machine:~/workspace/test/Project_test$ git branch * master vzxtest1 vzxtest2 ghost@ghost-machine:~/workspace/test/Project_test$
分支合并与同步 git merge
合并分支即将分支的改动与另一个分支合并,也可以和master分支合并。合并后,被合并的分支上的commit都被合并到需要合并的分支上。命令: git merge branchname
使用该命令有个前提,就是要分清哪个是需要合并的分支,哪个是被合并的分支,输入该命令的时候,需要切换到需要合并的分支上。
例如:需要将分支v1.1的更新内容合并到v1.2上,则首先要切换到v1.2的分支上:git checkout v1.2,确认目前的工作状态在v1.2上
ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git checkout v1.2 切换到分支 'v1.2' ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git branch master v1.1 * v1.2 v1.4 v1.5 vtest ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$
V1.1的更新如下:
commit 28f059eb7d9479cc6d5c6f684e106bd540f1f1e5 Author: zx <zx@git.com> Date: Sun Nov 20 10:18:47 2016 +0800 test 3 for v1.1 commit d8033d48714dcaf8b8fabfbaacc6df8b79b23600 Author: zx <zx@git.com> Date: Sun Nov 20 10:17:52 2016 +0800 test 2 for v1.1 commit f35d10ace6da47c1b19c4eaf682e5e6645a3d2e1 Author: zx <zx@git.com> Date: Sun Nov 20 10:16:54 2016 +0800 test 1 for v1.1 commit 8602795022e97241b2926ac7d5b0a685c57e0f4e Merge: 2ea3364 d8b74f0 Author: zx <zx@git.com> Date: Sun Nov 13 10:00:10 2016 +0800 add pathc diff is 2
V1.2的更新如下:
commit 8602795022e97241b2926ac7d5b0a685c57e0f4e Merge: 2ea3364 d8b74f0 Author: zx <zx@git.com> Date: Sun Nov 13 10:00:10 2016 +0800 add pathc diff is 2 commit d8b74f02ffdf6b2843fdce848490d40f6e562c95 Author: zx <zx@git.com> Date: Sun Nov 13 09:42:49 2016 +0800 rm patch commit 2ea33641ee8ec5c1e191764fa6d0c9c884632c10 Author: zx <zx@git.com> Date: Sun Nov 13 09:33:08 2016 +0800 patch is 2
使用命令 git merge 将v1.1的commit合并到v1.2上
ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git merge v1.1 更新 8602795..28f059e Fast-forward v1.1_test.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 v1.1_test.txt ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git log commit 28f059eb7d9479cc6d5c6f684e106bd540f1f1e5 Author: zx <zx@git.com> Date: Sun Nov 20 10:18:47 2016 +0800 test 3 for v1.1 commit d8033d48714dcaf8b8fabfbaacc6df8b79b23600 Author: zx <zx@git.com> Date: Sun Nov 20 10:17:52 2016 +0800 test 2 for v1.1 commit f35d10ace6da47c1b19c4eaf682e5e6645a3d2e1 Author: zx <zx@git.com> Date: Sun Nov 20 10:16:54 2016 +0800 test 1 for v1.1
合并也会有冲突,解决冲突的方法如同打补丁解决的冲突的方法一样。
查看当前分支合并的情况
命令:git log --graph
在平常的log记录左边就会多出一些“*”和“|”的符号
* commit f35d10ace6da47c1b19c4eaf682e5e6645a3d2e1 | Author: zx <zx@git.com> | Date: Sun Nov 20 10:16:54 2016 +0800 | | test 1 for v1.1 | * commit 8602795022e97241b2926ac7d5b0a685c57e0f4e |\ Merge: 2ea3364 d8b74f0 | | Author: zx <zx@git.com> | | Date: Sun Nov 13 10:00:10 2016 +0800 | | | | add pathc diff is 2 | | | * commit d8b74f02ffdf6b2843fdce848490d40f6e562c95 | | Author: zx <zx@git.com> | | Date: Sun Nov 13 09:42:49 2016 +0800 | | | | rm patch | | | * commit 23b0c398dd72eade722fc6d2308097aec6148630 | | Author: zx <zx@git.com> | | Date: Sun Nov 13 09:31:35 2016 +0800 | | | | patch is 1 | | * | commit 2ea33641ee8ec5c1e191764fa6d0c9c884632c10 |/ Author: zx <zx@git.com> | Date: Sun Nov 13 09:33:08 2016 +0800 | | patch is 2 |
分支合并某个commit的提交 git cherry-pick
分支中需要有合并的提交,但使用git merge就会将合并所有的提交,但此时是不需要合并这么多的提交,只是需要合并某一两个的commit提交,这时需要使用git cherry-pick命令。命令:git cherry-pick <commitID>
若合并的过程中有冲突,需要解决冲突并上传解决后的方法。
分支v1.1的提交历史
commit 34434f922b9698f0b296fd1fa8aac800e3965238 Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:02:32 2017 +0800 v1.1 for v1.2 commit 3. commit 9d79e2ead30966d74bb1648c36480fe7ab580bf6 Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:02:08 2017 +0800 v1.1 for v1.2 commit 2. commit cfc355ebe0ddcbc80e918332bc319786896a30a2 Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:01:14 2017 +0800 v1.1 for v1.2 commit 1. commit 25ceef1a6f63dbf80cbfedc60ce10215c08f7429 Author: zx <zx@git.com> Date: Sat Dec 3 10:39:17 2016 +0800 add by 2016.12.03
v1.2的提交历史
commit 8bdea8cc6d068a5c159b49eaeeae3c9925ed879f Author: zx <zx@git.com> Date: Tue Nov 29 22:56:57 2016 +0800 add for v1.2 by 2016.11.29 commit 9815af9d1a1639499cb784c32a2c0e390998a067 Merge: 4c6447e 84cb30d Author: zx <zx@git.com> Date: Tue Nov 29 22:36:11 2016 +0800 Merge branch 'master' into v1.2 commit 84cb30d370453e2e1a7dc2c3d974c397a8fa53b2 Author: zx <zx@git.com> Date: Tue Nov 29 22:28:08 2016 +0800 add by 2016.11.29 commit 4c6447ec598616638b1d78d0c04757d48a04701a Author: zx <zx@git.com> Date: Sun Nov 20 10:45:14 2016 +0800 test 1 for v1.2 commit 28f059eb7d9479cc6d5c6f684e106bd540f1f1e5 Author: zx <zx@git.com> Date: Sun Nov 20 10:18:47 2016 +0800 test 3 for v1.1 commit d8033d48714dcaf8b8fabfbaacc6df8b79b23600 Author: zx <zx@git.com> Date: Sun Nov 20 10:17:52 2016 +0800
合并有冲突的提交
v1.2合并v1.1的一个提交,这个提交会有冲突commit 9d79e2ead30966d74bb1648c36480fe7ab580bf6 Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:02:08 2017 +0800 v1.1 for v1.2 commit 2.
有冲突的原因:
第一个提交
commit cfc355ebe0ddcbc80e918332bc319786896a30a2 Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:01:14 2017 +0800 v1.1 for v1.2 commit 1.
这个提交是创建一个文件v1.1_for_v1.2_commit.txt,并在该文件写入 commit 1 第二个提交,就是需要合并的提交9d79e2ead,这个提交是往文件v1.1_for_v1.2_commit.txt追加写入 commit 2
如果只合并提交9d79e2ead,v1.2中还没有创建文件v1.1_for_v1.2_commit.txt,就会有冲突提示。
将分支切换到v1.2,合并过程
ghost@ghost-machine:~/workspace/git_test$ git cherry-pick 9d79e2ead error: 不能应用 9d79e2e... v1.1 for v1.2 commit 2. 提示:冲突解决完毕后,用 'git add <路径>' 或 'git rm <路径>' 提示:对修正后的文件做标记,然后用 'git commit' 提交 ghost@ghost-machine:~/workspace/git_test$ git status 位于分支 v1.2 您的分支与上游分支 'origin/v1.2' 一致。 您在执行拣选提交 9d79e2e 的操作。 (解决冲突并运行 "git cherry-pick --continue") (使用 "git cherry-pick --abort" 以取消拣选操作) 未合并的路径: (酌情使用 "git add/rm <文件>..." 标记解决方案) 由我们删除: v1.1_for_v1.2_commit.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
查看合并状态
ghost@ghost-machine:~/workspace/git_test$ git status 位于分支 v1.2 您的分支与上游分支 'origin/v1.2' 一致。 您在执行拣选提交 9d79e2e 的操作。 (解决冲突并运行 "git cherry-pick --continue") (使用 "git cherry-pick --abort" 以取消拣选操作) 未合并的路径: (酌情使用 "git add/rm <文件>..." 标记解决方案) 由我们删除: v1.1_for_v1.2_commit.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a") ghost@ghost-machine:~/workspace/git_test$ cat v1.1_for_v1.2_commit.txt commit 1 commit 2 ghost@ghost-machine:~/workspace/git_test$
解决合并的冲突
将有冲突的文件修改后再次提交ghost@ghost-machine:~/workspace/git_test$ git add . ghost@ghost-machine:~/workspace/git_test$ git commit -m "v1.2 to v1.1 commit 1,2." [v1.2 6c5c2e3] v1.2 to v1.1 commit 1,2. Date: Wed Aug 23 23:02:08 2017 +0800 1 file changed, 2 insertions(+) create mode 100644 v1.1_for_v1.2_commit.txt ghost@ghost-machine:~/workspace/git_test$ git log commit 6c5c2e380b524a55a6b5e851b7e0ecc9d8a4d602 Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:02:08 2017 +0800 v1.2 to v1.1 commit 1,2. commit 8bdea8cc6d068a5c159b49eaeeae3c9925ed879f Author: zx <zx@git.com> Date: Tue Nov 29 22:56:57 2016 +0800 add for v1.2 by 2016.11.29
合并没有冲突的提交
如果合并的提交没有冲突,则不需要再次修改后再提交根据上节的内容,v1.2合并v1.1的一个提交,这个提交没有冲突
commit 34434f922b9698f0b296fd1fa8aac800e3965238 Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:02:32 2017 +0800 v1.1 for v1.2 commit 3.
这个提交是往文件v1.1_for_v1.2_commit.txt追加写入 commit 3
由于上一节已经解决了冲突,所以现在合并不会产生冲突。
将分支切换到v1.2,合并过程
ghost@ghost-machine:~/workspace/git_test$ git cherry-pick 34434f922b [v1.2 2b897d0] v1.1 for v1.2 commit 3. Date: Wed Aug 23 23:02:32 2017 +0800 1 file changed, 1 insertion(+) ghost@ghost-machine:~/workspace/git_test$ git log commit 2b897d031ae5c1fd347ed08779388729facdb5be Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:02:32 2017 +0800 v1.1 for v1.2 commit 3. commit 6c5c2e380b524a55a6b5e851b7e0ecc9d8a4d602 Author: zhongxin <zxngyulin@163.com> Date: Wed Aug 23 23:02:08 2017 +0800 v1.2 to v1.1 commit 1,2. commit 8bdea8cc6d068a5c159b49eaeeae3c9925ed879f Author: zx <zx@git.com> Date: Tue Nov 29 22:56:57 2016 +0800 add for v1.2 by 2016.11.29
标签管理git tag
git标签管理是将某个时间点做标记,可以用于版本的发布。git tag是版本中的标签状态。概念和分支差不多,但标签只是用来做标记,版本差异和添加功能还是使用分支功能。在开发的某个时间点打上标签,记录当时的状态,例如在某个时间段,将所有功能分支添加完毕后,合入主干版本,打上标签V0.1版本发布,并加以注释,可以在后期维护的时候更方便,而不是需要记住主干上的commit的哈希值以及备注来寻找V0.1版本了,还可以通过git checkout <tagname>直接跳转到标签的位置,而不是输入该版本的commit哈希值跳转。
添加标签 git tag tagname
git打标签分为普通标签和备注标签,普通标签就只有一个名字,而备注标签可以给该标签添加备注,例如可以打标签的时机,众多功能添加后,出第一版测试版等。普通标签命令:git tag tagname 备注标签命令:git tag tagname -m “something note”
ghost@ghost-machine:~/workspace/test/Project_test$ git tag V0.1test ghost@ghost-machine:~/workspace/test/Project_test$ git tag V0.2test -m "V0.2 for test" ghost@ghost-machine:~/workspace/test/Project_test$ git tag V0.1test V0.2test ghost@ghost-machine:~/workspace/test/Project_test$
为历史的某个提交打标签。git tag只是给最近的提交commit打标签,如果刚好想给前面的提交commit打标签,在打标签的后面添加相应的commit的哈希值即可:
命令:git tag <tagname> <commit id>
ghost@ghost-machine:~/workspace/test/Project_test$ git log commit 84cb30d370453e2e1a7dc2c3d974c397a8fa53b2 Author: zx <zx@git.com> Date: Tue Nov 29 22:28:08 2016 +0800 add by 2016.11.29 commit 28f059eb7d9479cc6d5c6f684e106bd540f1f1e5 Author: zx <zx@git.com> Date: Sun Nov 20 10:18:47 2016 +0800 test 3 for v1.1 add by 2016.11.29 ghost@ghost-machine:~/workspace/test/Project_test$ git tag vtest 28f059 ghost@ghost-machine:~/workspace/test/Project_test$ git tag V0.1test V0.2test vtest ghost@ghost-machine:~/workspace/test/Project_test$ git show vtest warning: refname 'vtest' is ambiguous. commit 28f059eb7d9479cc6d5c6f684e106bd540f1f1e5 Author: zx <zx@git.com> Date: Sun Nov 20 10:18:47 2016 +0800 test 3 for v1.1 diff --git a/v1.1_test.txt b/v1.1_test.txt index c235a34..a8d3af4 100644 --- a/v1.1_test.txt +++ b/v1.1_test.txt @@ -1,2 +1,3 @@ test commit 1 for v1.1 test commit 2 for v1.1 +test commit 3 for v1.1 ghost@ghost-machine:~/workspace/test/Project_test$
标签的显示 git show tagname
命令:git show tagname
用该命令可以将标签显示出来,有备注的标签也可以显示出备注。
ghost@ghost-machine:~/workspace/test/Project_test$ git show V0.1test commit 8602795022e97241b2926ac7d5b0a685c57e0f4e Merge: 2ea3364 d8b74f0 Author: zx <zx@git.com> Date: Sun Nov 13 10:00:10 2016 +0800 add pathc diff is 2 ghost@ghost-machine:~/workspace/test/Project_test$ git show V0.2test tag V0.2test Tagger: zx <zx@git.com> Date: Sun Nov 27 09:48:20 2016 +0800 V0.2 for test commit 8602795022e97241b2926ac7d5b0a685c57e0f4e Merge: 2ea3364 d8b74f0 Author: zx <zx@git.com> Date: Sun Nov 13 10:00:10 2016 +0800 add pathc diff is 2 ghost@ghost-machine:~/workspace/test/Project_test$
删除标签 git tag -d tagname
命令:git tag -d tagname
删除标签和删除分支一样,在命令后面加入 -d
将标签推送到服务器git push origin tagname
命令:git push origin <tagname>
这个命令可以将某个标签推送道服务器上。
ghost@ghost-machine:~/workspace/test/Project_test$ git push origin V0.1test Total 0 (delta 0), reused 0 (delta 0) To /home/ghost/warehouse/Project_test.git/ * [new tag] V0.1test -> V0.1test ghost@ghost-machine:~/workspace/test/Project_test$
推送全部标签到服务器上也可以用下列命令
命令:git push origin --tag
ghost@ghost-machine:~/workspace/test/Project_test$ git push origin --tag 对象计数中: 1, 完成. 写入对象中: 100% (1/1), 151 bytes | 0 bytes/s, 完成. Total 1 (delta 0), reused 0 (delta 0) To /home/ghost/warehouse/Project_test.git/ * [new tag] V0.2test -> V0.2test ghost@ghost-machine:~/workspace/test/Project_test$
获取服务器上的标签git pull
git获取标签仅仅输入命令:git pul即可,后面需要添加任何选项ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$ git pull 来自 /home/ghost/warehouse/Project_test * [新标签] V0.1test -> V0.1test * [新标签] V0.2test -> V0.2test Already up-to-date. ghost@ghost-machine:~/workspace/test/ghost_project/Project_test$
相关文章推荐
- GIT分支版本管理
- 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支
- 代码版本管理软件Git的优势和用法
- git的版本管理使用(三)-拉取分支代码
- 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
- 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支
- 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
- Git的版本和分支管理
- 版本管理-图解Git的分支管理原理,深度分析fetch和pull区别
- Hybrid App开发git多分支代码版本管理实践
- git版本管理软件——搭建git服务器
- git版本管理软件——git发布补丁和打补丁
- Git的版本和分支管理
- iOS-在Xcode中使用Git进行源码版本管理(四:分支)
- 【真是好东西呀】版本管理软件Git
- GitBlit git版本库管理软件安装
- Git的版本和分支管理
- Git的版本和分支管理
- Git的版本和分支管理(高级用法 写的较好)
- 版本控制(八)--git分支&管理