git学习笔记(1)
- 
新建一个分支时设置跟踪关系 git checkout -b new_branch_name [--track] origin/remote_branch_name--track选项可以省略 
- 
设置已有分支和远端分支的跟踪关系 git branch -u origin/remote_branch_name local_branch_name注意:-u选项是--set-upstream-to的简写,因此上面这条命令可以写作 git branch --set-upstream-to=origin/remote_branch_name local_branch_namelocal_branch_name可以省略,默认值为当前分支 
获取远程分支信息
- 
拉取远程仓库分支信息 git fetch origin
- 
查看所有分支(本地和远端) git branch -a
- 
切换远程默认分支 git remote set-head origin remote_branch_name
- 
本地建立远程分支 git push origin local_branch_name:remote_branch_nameremote_branch_name即新建的远端分支 
- 
本地删除远端分支 git push origin --delete remote_branch_name
rebase工作流
- 
与merge的区别 本地两个分支 一个我的分支 mywork 一个主分支 master 现在我修改的部分要合并到 master 上,可以有两种选择 merge 或者 rebase 两者的最后得到的结果是一样的,但是区别是 rebase 一个两个分支 就各位了一个分支,mywork合并前所有的 patch也就是commit 消失了 
- 
如何rebase 首先本地代码库不是最新的,所以先从远端仓库pull一下 git checkout master` 
 git pull然后 开始切换到mywork分支开始rebase git checkout mywork 
 git rebase master这个时候就开始rebase 了,一般情况下rebase都是会有冲突的,详细查看冲突可以用命令 git status然后就会显示哪个文件有冲突,然后打开有冲突的哪个文件,会发现有一些“<<<<<<<”, “=======”, “>>>>>>>” 这样的符号。原来的更改是master分支上的更改,传入的更改是工作分支mywork分支上的更改; “<<<<<<<” 表示冲突代码开始 
 
 “=======” 表示mywork与master冲突代码分隔符
 
 “>>>>>>>" 表示冲突代码的结束
 
 <<<<<<<
 所以这一块区域mywork的代码
 
 =======
 这一块区域master的代码
 
 
 >>>>>>>rebase 和 merge的另一个区别是rebase 的冲突是一个一个解决,如果有十个冲突,先解决第一个,然后用命令 git add -u 
 git rebase --continue继续后才会出现第二个冲突,直到所有冲突解决完,而merge 是所有的冲突都会显示出来。 另外如果rebase过程中,你想中途退出,恢复rebase前的代码则可以用命令 git rebase --abort所以rebase的工作流就是 git rebase 
 while(存在冲突) {
 git status
 找到当前冲突文件,编辑解决冲突
 git add -u
 git rebase --continue
 if( git rebase --abort )
 break;
 }最后冲突全部解决,rebase成功!! 然后我需要把本地的mywork 分支push 到远端mywork分支上然后再给远端的master分支 PR。 
总结
- 
rebase工作流: git rebase 
 while(存在冲突) {
 git status
 找到当前冲突文件,编辑解决冲突
 git add -u
 git rebase --continue
 if( git rebase --abort )
 break;
 }
- 
git pull (或fetch && merge) 
 编辑冲突文件
 git push
 
                    
                

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号