git使用(4)
分支管理
通常,合并分支后删除合并的分支,会丢失该分支信息,要禁用这种模式(fast forward),git会在merge时生成一个新的commit,这样就可以在分支历史上看出分支信息
[root@baseserver gittest]# git checkout -b dev ##创建新分支
切换到一个新分支 'dev'
[root@baseserver gittest]# git branch ##查看分支
* dev
master
[root@baseserver gittest]# vi test.txt ##修改并保存
[root@baseserver gittest]# git add test.txt ##加入提交
[root@baseserver gittest]# git commit -m "update test" ##提交修改
[dev 2a168f3] update test
1 file changed, 1 insertion(+)
[root@baseserver gittest]# git checkout master ##切换master分支
切换到分支 'master'
您的分支与上游分支 'origin/master' 一致。
[root@baseserver gittest]# git merge --no-ff -m "merge with no-ff" dev ##合并
Merge made by the 'recursive' strategy.
test.txt | 1 +
1 file changed, 1 insertion(+)
[root@baseserver gittest]# git log --graph --pretty=oneline --abbrev-commit ##git log
* 607cab1 merge with no-ff
|\
| * 2a168f3 update test
|/
* 9b7a206 test2
* acc96de 22
* e9639ce readme.md
* 286201d add test2:
* a91f086 update next
* f213330 udpate2
* f8f70ba another update
* 42508c1 修改test.txt
* d6c1695 添加test.txt
stash
当当前分支正在进行修改且无法提交修改内容,此时又需要切换到其他分支做其他方面的工作时,可以使用git stash命令,类似于暂存功能
[root@baseserver gittest]# git status ##查看状态
位于分支 master
您的分支与上游分支 'origin/master' 一致。
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: test.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@baseserver gittest]# git stash ##git stash
Saved working directory and index state WIP on master: 3feb041 merge
HEAD 现在位于 3feb041 merge
[root@baseserver gittest]# git status ##查看状态
位于分支 master
您的分支与上游分支 'origin/master' 一致。
nothing to commit, working tree clean
[root@baseserver gittest]# git stash pop ##取消git stash
\位于分支 master
您的分支与上游分支 'origin/master' 一致。
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: test.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
丢弃了 refs/stash@{0} (6186c78006ff560e0bf061492d484ee352dd7a40)
[root@baseserver gittest]# git stash list ##查看git stash list
删除未合并分支
[root@baseserver gittest]# git branch -d dev ##删除dev分支(-d)
error: 分支 'dev' 没有完全合并。
如果您确认要删除它,执行 'git branch -D dev'。
[root@baseserver gittest]# git branch -D dev ##删除dev分支(-D)
已删除分支 dev(曾为 7b81326)。
[root@baseserver gittest]# git branch ##查看分支
* master
多分支
[root@baseserver gittest]# git branch ##查看所有分支
* master
[root@baseserver gittest]# git checkout -b dev ##创建新分支dev(此时远程仓库已存在dev分支)
切换到一个新分支 'dev'
[root@baseserver gittest]# git pull ##更新,提示没有关联信息
当前分支没有跟踪信息。
请指定您要合并哪一个分支。
详见 git-pull(1)。
git pull <远程> <分支>
如果您想要为此分支创建跟踪信息,您可以执行:
git branch --set-upstream-to=origin/<分支> dev
[root@baseserver gittest]# git branch --set-upstream-to=origin/dev ##本地分支与远程仓库分支关联
分支 dev 设置为跟踪来自 origin 的远程分支 dev。
[root@baseserver gittest]# git pull ##发现已关联上
Already up-to-date.
[root@baseserver gittest]# git checkout -b dev2 origin/dev2 ##切换分支,并且此分支与远程仓库分支关联
分支 dev2 设置为跟踪来自 origin 的远程分支 dev2。
切换到一个新分支 'dev2'
浙公网安备 33010602011771号