美文网首页
git分支管理

git分支管理

作者: 京北磊哥 | 来源:发表于2022-01-21 17:00 被阅读0次

    git 分支相关常用命令

    基本命令

    // 查看本地分支
    git branch
    // 查看远程分支
    git branch -r
    // 查看分支详细信息
    git branch -vv
    // 同步远程仓库
    git fetch
    // 创建分支dev
    git branch dev
    // 切换到分支dev
    git checkout dev
    // 删除分支dev
    git branch -d dev
    // 创建并切换到分支dev
    git checkout -b dev
    // 合并分支
    git merge dev
    

    远程分支

    创建远程分支

    git push (远程仓库名) (分支名)
    

    或者

    git push (远程仓库名) (本地分支名:运程分支名)
    // 创建远程分支dev  
    git push origin dev
    // 或             
    git push origin dev:dev
    

    意思为取出本地的dev分支,推送到远程的仓库中的dev分支去。

    跟踪远程分支

    从远程分支 checkout 出来的本地分支,称为 跟踪分支 (tracking branch)。跟踪分支是一种和某个远程分支有直接联系的本地分支。在跟踪分支里输入 git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。同样,在这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。

    git checkout -b [分支名] [远程名]/[分支名]
    git checkout --track origin/dev
    // 从远程分支dev创建本地分支feature
    git checkout -b feature origin/dev
    

    在克隆仓库时,Git 通常会自动创建一个名为 master 的分支来跟踪 origin/master。这正是 git push 和 git pull 一开始就能正常工作的原因。

    // 将本地分支feature的远程分支设为orgin/dev
    git branch --set-upstream-to=origin/dev
    

    删除远程分支

    语法:git push [远程名] :[分支名]

    // 删除远程分支dev
    git push origin :dev
    

    更新

    从仓库更新更新跟踪的远程分支

    git pull
    git pull origin
    

    从远程分支master合并到当前分支

    git pull origin master
    

    相当于

    git fetch origin
    git merge origin/next
    

    与Github同步

    将本地的一个目录下的文件与Github上一个仓库相关联。

    // 初始化本地
    git init
    // 增加远程仓库地址
    git remote add origin git@github.com:Zhao-Hui-Huang/GitLearn.git
    // 从远程仓库同步
    git fetch
    // 检出
    git checkout --track origin/master
    
    git add .
    git commit -m'add test file'
    git push
    

    Git 比较命令

    // 比较工作区与暂存区的文件
    git diff
    // 比较暂存区与最后一次commit的文件
    git diff --cached
    // 比较工作区与最后一次commit的文件
    git diff HEAD
    

    Git rebase(高端操作)

    我们在工作中很常见代码冲突

    场景实例 假如我们master迁出(dev1)分支 进行工作 别人也在master(dev2)迁出进行工作

    每个人都会提交多个commit 这样分支会很不好看。

    当一个人开发完毕后 他会合并分支到master上 那我们分支的代码就不是最新的了如果俩个人修改了同一份文件 这样就会使我们产生冲突 那我们如何优雅的去解决合并 并且使我们的分支变的好看呢。

    请看实例

    首先创建分支

    // 创建分支
    git branch dev
    // 切换分支
    git checkout dev
    

    或者

    // 创建并切换到分支dev
    git checkout -b dev
    

    现在我们有俩个分支了
    切换回主分支

    git checkout -b master
    

    创建文件

    touch master.txt
    touch dev.txt
    

    修改master分支文件

    vim master.txt
    然后i进行插入
    esc
    输入
    :wq
    保存
    

    然后再master主分支进行素质三连

    git add .
    git commit "master1"
    git push origin master
    

    然后切换到我们dev分支
    修改dev文件 操作同上
    这时候没有冲突 可以直接合并

    // 注意 是在dev分支进行此操作
    git merge master
    

    切回到主分支master进行修改 接着修改dev文件 然后素质三连
    切换到dev分支 修改dev文件 然后提交
    接着合并master 注意细节

    // 我们应当这样进行合并
    git rebase master
    git merge master
    // 这时我们执行
    git status 
    // git status命令会提示你当前应该怎么做
    // 然后我们根据提示执行合并并解决冲突
    git rebase --continue
    
    // 然后执行
    git add <冲突的文件名>
    // 继续
    git rebase --continue
    :wq 保存
    
    // 然后打开我们冲突的文件 
    vim <冲突的文件名>
    // 把多余的进行删除 然后add commit
    git add .
    git commit -m "dev2"
    
    // 接着我们执行
    git rebase -i HEAD~<commit几次就数字几>
    // 列子
    git rebase -i HEAD~2
    // i 进行修改 除了第一个之外进行 pick改为f(其它命令自行百度)
    :wq 进行保存
    // 然后进行强制提交
    git push origin dev -f
    // 大功告成
    

    这时我们的冲突解决了 而且保持了最新的代码master

    而且我们的分支 commit提交也很简介 只有我们保留的那一个

    相关文章

      网友评论

          本文标题:git分支管理

          本文链接:https://www.haomeiwen.com/subject/asoehrtx.html