关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

基本完整的关于Git分支branch的操作

guanshanw 2023-10-07 12:14 72 浏览 0 评论

Git 使用背景

项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求

操作步骤

下面以dev名称为lex为分支名为例来操作一遍

客户端操作:下面部分是简单的说明

首先clone代码

  git clone git@10.211.55.3:/home/git/repos/app.git

然后进入代码的目录

cd app

拉取pull 代码到最新

git pull

然后查看branch 的版本信息

 git branch -a

然后新建branch

  git branch lex

然后切换到新的分支lex

git checkout lex

核对本地和远程分支情况:

1 远程新建了一个分支,本地没有该分支

git checkout --track origin/lex

2 本地新建了一个分支 lex,但是在远程没有

git push --set-upstream origin lex

在本地分支修改代码或者增加文件之类的

当前分支所有代码提交

 git add .

编写提交备注

 git commit -m "add text.txt" 

提交代码至远程分支lex

  git push origin lex

切换当前分支至主干(master)

 git checkout master

如果多人开发建议执行如下命令,拉取最新的代码

git pull origin master

合并(merge)分支代码

  git merge lex

merge完成后,查看是否有冲突

git status

最后切换回原开发分支

 git checkout lex

一个简化操作如下:

check and build new branch for dev:
1 git clone git@10.211.55.3:/home/git/repos/app.git
2 git checkout -b lex
3 git push -u origin lex
    
git checkout -b|-B <new_branch> [<start point>]
           Specifying -b causes a new branch to be created as if git-branch(1) were called and then checked out.
           In this case you can use the --track or --no-track options, which will be passed to git branch. As a
           convenience, --track without -b implies branch creation; see the description of --track below.

git-push - Update remote refs along with associated objects
-u | --set-upstream

这部分是操作过程供参考:

?  Downloads pwd
/Users/lex/Downloads
?  Downloads mkdir Project
?  Downloads cd Project
?  Project git clone git@10.211.55.3:/home/git/repos/app.git
Cloning into 'app'...
  ___                 ___
 (o o)               (o o)
(  V  ) ALex CentOS (  V  )
--m-m-----------------m-m--
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 14 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (14/14), done.
Resolving deltas: 100% (3/3), done.

?  Project ls
app
?  Project cd app
app git:(master) git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
(END)

?  app git:(master) git branch -v
* master e6b46a6 add php2 file
(END)

?  app git:(master) git pull
warning: Pulling without specifying how to reconcile divergent branches is
discouraged. You can squelch this message by running one of the following
commands sometime before your next pull:

  git config pull.rebase false  # merge (the default strategy)
  git config pull.rebase true   # rebase
  git config pull.ff only       # fast-forward only

You can replace "git config" with "git config --global" to set a default
preference for all repositories. You can also pass --rebase, --no-rebase,
or --ff-only on the command line to override the configured default per
invocation.

  ___                 ___
 (o o)               (o o)
(  V  ) ALex CentOS (  V  )
--m-m-----------------m-m--
Already up to date.

新建branch lex
?  app git:(master) git branch lex

再次查看branch 版本信息
?  app git:(master) git branch -a
  lex
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
(END)
?  app git:(master) git branch -v
  lex    e6b46a6 add php2 file
* master e6b46a6 add php2 file
(END)


切换到新的分支 lex
?  app git:(master) git checkout lex
Switched to branch 'lex'

?  app git:(lex) git branch -a
* lex
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
(END)
?  app git:(lex) git branch -v
* lex    e6b46a6 add php2 file
  master e6b46a6 add php2 file
(END)

参考这部分++++++++++++++++++++++++++++++++++++++++++
1 如果远程新建了一个分支,本地没有该分支。
可以利用 git checkout --track origin/branch_name ,这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name。
git checkout --track origin/branch_name
2 如果本地新建了一个分支 branch_name,但是在远程没有。
这时候 push 和 pull 指令就无法确定该跟踪谁,一般来说我们都会使其跟踪远程同名分支,所以可以利用 git push --set-upstream origin branch_name ,这样就可以自动在远程创建一个 branch_name 分支,然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步。
git push --set-upstream origin branch_name
++++++++++++++++++++++++++++++++++++++++++

我的情况是本地有,远程没有
?  app git:(lex) git push --set-upstream origin lex
  ___                 ___
 (o o)               (o o)
(  V  ) ALex CentOS (  V  )
--m-m-----------------m-m--
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To 10.211.55.3:/home/git/repos/app.git
 * [new branch]      lex -> lex
Branch 'lex' set up to track remote branch 'lex' from 'origin'.
查看远程和本地所有的分支
?  app git:(lex) git branch -a
* lex
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/lex
  remotes/origin/master
(END)

可以看到当前使用的分支 *lex
现在我在这个分支下测试:
创建一个text.txt文件并给予当前时间
?  app git:(lex) date +%F+%T >> text.txt
?  app git:(lex) ? cat text.txt
2021-02-21+17:52:19
当前分支所有代码提交
?  app git:(lex) ? git add .
# 编写提交备注
?  app git:(lex) ? git commit -m "add text.txt"
[lex 641fff6] add text.txt
 1 file changed, 1 insertion(+)
 create mode 100644 text.txt
 # 提交代码至远程分支lex
 ?  app git:(lex) git push origin lex
  ___                 ___
 (o o)               (o o)
(  V  ) ALex CentOS (  V  )
--m-m-----------------m-m--
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 286 bytes | 286.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
To 10.211.55.3:/home/git/repos/app.git
   e6b46a6..641fff6  lex -> lex


切换当前分支至主干(master)
?  app git:(lex) git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.


# 如果多人开发建议执行如下命令,拉取最新的代码
?  app git:(master) git pull origin master
warning: Pulling without specifying how to reconcile divergent branches is
discouraged. You can squelch this message by running one of the following
commands sometime before your next pull:

  git config pull.rebase false  # merge (the default strategy)
  git config pull.rebase true   # rebase
  git config pull.ff only       # fast-forward only

You can replace "git config" with "git config --global" to set a default
preference for all repositories. You can also pass --rebase, --no-rebase,
or --ff-only on the command line to override the configured default per
invocation.

  ___                 ___
 (o o)               (o o)
(  V  ) ALex CentOS (  V  )
--m-m-----------------m-m--
From 10.211.55.3:/home/git/repos/app
 * branch            master     -> FETCH_HEAD
Already up to date.



合并(merge)分支代码
?  app git:(master) git merge lex
Updating e6b46a6..641fff6
Fast-forward
 text.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 text.txt
 
 # merge完成后可执行如下命令,查看是否有冲突
?  app git:(master) git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean


提交代码至主干(master)
git push origin master

?  app git:(master) git push origin master
  ___                 ___
 (o o)               (o o)
(  V  ) ALex CentOS (  V  )
--m-m-----------------m-m--
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To 10.211.55.3:/home/git/repos/app.git
   e6b46a6..641fff6  master -> master
   

最后切换回原开发分支
?  app git:(master) git checkout lex
Switched to branch 'lex'
Your branch is up to date with 'origin/lex'
?  app git:(lex) pwd
/Users/lex/Downloads/Project/app

综上。

git branch -a

查看远程和本地所有的分支

git branch dev

本地建立分支dev

git push origin dev:dev

将本地分支dev关联到远程的dev分支

git checkout dev

切换到dev分支下


相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: