`
JohnShen0708
  • 浏览: 59448 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Git, Gerrit, Hudson (3) -- GIT 技巧总结

阅读更多

1. 解决远程冲突

由于有 code review 的存在,有可能出现这种情况:同时有多个人的代码被 review,如果有一个人改了与你相同地方的代码,并且他的代码先通过 review 并被合进了远程代码库。当你的代码通过 review 并进行合并,此时会产生冲突。由于冲突是发生在远端,不能采用在本地 rebase 的办法,此时需要采取以下步骤来解决冲突:

 

# 进入工程,假设是ProjectA
cd ProjectA
# 切换到需要被合并的特征分支,例如 FixForBug1922
git checkout FixForBug1922
# 从远程获取代码
git fetch origin
# rebase 到远程分支,命令为 git rebase origin/<remote_branch>
git rebase origin/1.0.1

# rebase 的时候会提示冲突,手动合并冲突

# 将解决冲突后的文件重新加入
git add <conflict_file>
# 继续 rebase
git rebase --continue
# 成功后将最新的特征分支 push 到远端
git push origin FixForBug1922:refs/for/1.0.1

注意:push 后需要重新进行 code review

以上步骤中有一步:git fetch 。fetch 是比 pull 更细粒度的操作。fetch 是将远端的代码拿下来,而 pull 是执行 fetch 后再与本地的代码合并。所以上面的命令实际是告诉 git 把远端的代码拿下来,但是不要合并(因为我们现在是在特征分支上,合并肯定会冲突出错)。fetch 命令会自动在本地创建一个远程分支的本地拷贝,此拷贝我们不能直接操作(如果你强行调用 git checkout 去切入这个拷贝,git 会自动创建一个本地分支,并切入到那个自动创建的本地分支上)。我们还是使用 rebase 命令重新放置特征分支并解决冲突。

 

2. 本地 branch 改名

有时候想重命名本地 branch, 命令如下:

 

git branch -m <old_branch> <new_branch>
# 例如,重命名 feature branch "FixBug123" 至 "FixBug124"
git branch -m FixBug123 FixBug124
 

3. 合并本地 branch

有时候想在本地将一个 branch 的内容合并到另一个 branch 上。比如,假设在做修改之前没有新建一个 feature branch,而是在原来的 feature branch 上做了修改,push 的时候发现这个 feature branch 所关联的远程的 review 已经通过了(或被 abandon 了),此时会 push 不上去。有一个解决办法就是另外新建一个 feature branch ,然后将新建的修改的内容合并到新的feature branch 上。使用 merge 命令:

 

 

# 创建并切换至新的 feature branch
git checkout -b <new_feature_branch>
# 在新 branch 上 merge 旧的 branch
git merge <old_feature_branch>

merge 命令的语法与 rebase 相似,都是先切换到新的 branch 下,然后 merge/rebase 被复制的 branch。例如:

 

 

# merge FixBug123 上的内容至 FixBug125
# 1. 切换回 tracking branch:
git checkout 1.0.0
# 2. 在此基础上创建并切换新的 feature branch
git checkout -b FixBug125
# 3. 在新 feature branch 上 merge:
git merge FixBug123
 

 

3. 删除本地分支

如果想删除某一本地分支,可执行如下命令:

 

git branch -D <local_branch>

 

4. Gerrit上创建新工程

首先,你的用户需要在 Gerrit 上拥有 Administrator 的权限,否则无法执行一下命令

打开 git bash ,如果本地已经有工程了,进入到工程的根目录。键入如下命令:

 

ssh -p 29418 review gerrit create-project --name <project_name> --parent <parent_name>

其中 <project_name> 就是要创建的工程的名字,<parent_name> 是父工程的名字(这个是可选的,此处声明父工程可以从父工程中继承很多属性,以免重复设置)。

登录 Gerrit ,在 Admin->Projects 中可以看到新建的工程(目前是空的),选择 Admin->Projects->[project_name]->General ,可以在 Description 中输入工程的描述,在 Project Options 中,推荐选择 'Cherry Pick' ,并勾选 'Automatically resolve conflicts' 和 'Require Change-Id in commit message' 。最后保存。

 

然后,在 git bash 中继续输入 (注意要在工程的根目录下):

 

# 初始化,会自动创建 .git 隐藏文件夹
git init
# 加入所有文件夹
git add *
# 加入 .classpath 文件
git add .classpath
# 加入 .project 文件
git add .project
# 提交,并输入 comments
git commit

将本地提交 push 到远程(此时应该在 master 上):

 

git push origin master:refs/for/master

以上操作将在 Gerrit 上生成一个新的 review,找人 review 直至通过,代码才会 merge 到远程库中。

 

选择 Admin->Projects->[project_name]->Branches,输入 'Branch Name' 和 'Initial Revision'(一般填 master)创建远程分支。

在本地 git bash 中执行 pull 命令:

 

git pull

这样会把刚才创建的远程分支信息拉到本地,现在可以在本地创建 Tracking Branch 链接远程分支:

 

git checkout -b 1.0.0 -t origin/1.0.0
分享到:
评论

相关推荐

    windows xp Git32 安装包 Git-2.10.0-32-bit

    这个“windows xp Git32 安装包 Git-2.10.0-32-bit”是专门为Windows XP 32位操作系统设计的Git版本,确保了即使在较旧的操作系统上也能顺利进行版本控制操作。 Git自诞生以来,其版本更新频繁,每个新版本通常包含...

    Git安装包 Git-2.15.1.2-64-bit和Git-2.15.1.2-32-bit以及常用命令行PDF

    Git-2.15.1.2-64-bit和Git-2.15.1.2-32-bit是Git的两个不同版本,分别针对64位和32位操作系统。这两个安装包包含了完整的Git工具集,允许用户在本地进行版本控制操作,如创建仓库、提交更改、分支管理和合并代码等。...

    git开发工具Git-2.24.0.2-64-bit

    "Git-2.24.0.2-64-bit" 是Git的一个特定版本,适用于64位操作系统。这个版本可能包含了性能优化、新功能以及已知问题的修复。 Git的核心特性包括: 1. 分布式:每个开发者的本地机器上都有一个完整的版本库,无需...

    Git-2.28.0-64-bit.exeGit-2.28.0-64-bit.exe

    Git-2.28.0-64-bit.exe Git-2.28.0-64-bit.exe Git-2.28.0-64-bit.exe

    Git-2.37.3-64-bit_3Git-2.37.3-64-bit_3Git-2.37.3-64-bit_3Git-2.3

    Git-2.37.3-64-bit_3是Git的特定版本,适用于64位操作系统。这个版本号表明它是Git的第2.37.3次更新,通常会包含错误修复、性能提升和新功能。在Windows系统中,Git的安装程序通常以.exe结尾,如Git-2.37.3-64-bit_3...

    git-2.41.0-64-bit window版本

    Git-2.41.0-64-bit window版本是针对Windows操作系统的一个特定构建,提供64位架构的支持。这个版本的发布,意味着用户可以在Windows环境下享受到Git的最新功能和性能优化。 Git的核心特性包括: 1. 分布式:每个...

    Git安装包Git-2.21.0-64-bit.zip

    Git安装包快速下载;git资源包,Git下载,Git压缩包;Git工具下载;Git-2.21.0-64-bit.zip;Git工具下载

    Git-2.15.0-64-bit.exe

    Git-2.15.0-64-bit.exe 是Git的特定版本,专为Windows 64位操作系统设计。这个版本在2017年10月30日发布,意味着它是最新的维护构建,提供了最新的功能、改进和修复。 Git 2.15.0 版本包含了多项重要的更新和优化,...

    Git-2.13.2-64-bit

    Git-2.13.2-64-bit是Git的一个特定版本,适用于64位操作系统。在这个版本中,Git可能包含了各种性能优化、新特性和错误修复。 1. **Git的基本概念**: - **版本控制**:Git的核心功能是版本控制,它记录了代码的每...

    Git官方最新版下载 Git-2.18.0-64-bit 64位Windows版本

    3. 安装Git-2.18.0-64-bit.exe: - 下载:访问Git官方网站或镜像站点,找到Git-2.18.0-64-bit.exe下载链接,完成下载。 - 安装向导:运行安装程序,按照提示选择安装路径、配置默认编辑器、设置终端类型(如使用...

    Git-2.30.1-64-bit

    3. 兼容性提升:Git-2.30.1可能增强了对不同操作系统或文件系统的支持。 4. 性能提升:通过优化内部算法和数据结构,新版本可能在处理大型仓库时速度更快。 安装Git-2.30.1-64-bit.exe文件后,用户可以设置用户名和...

    git windows 工具Git-2.30.0-64-bit 最新版

    从git上下载太慢了,整整下了一中午,在此分享给大家,有用的拿去 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个...

    Git-2.26.0-64-32.zip

    Git-2.26.0是Git在2020年3月30日发布的最新版本,提供了对64位和32位操作系统的支持,确保了广泛的用户群体可以顺利使用。这个压缩包"Git-2.26.0-64-32.zip"包含了适用于不同系统架构的安装程序,分别是"Git-2.26.0-...

    Git-2.33.1-64-bit和Git-2.28.0-64-bit.exe

    Git-2.33.1-64-bit和Git-2.28.0-64-bit.exe

    Git-2.18.0-64-bit安装包.zip

    Git-2.18.0-64-bit安装包是专为Windows 64位操作系统设计的,确保在高性能的64位环境下运行时,Git的所有功能都能得到充分发挥。 Git的2.18.0版本是一个重要的更新,它可能包含了多项性能优化和新特性。例如,这个...

    32位Windows版Git安装程序Git-2.11.0-32-bit.exe

    32位Windows版Git安装程序Git-2.11.0-32-bit.exe

    Git-2.28.0-64-bit git安装包windos64位官方下载

    Git-2.28.0-64-bit.exe 是适用于Windows 64位操作系统的Git官方安装程序,该版本为2.28.0,意味着它包含了最新的功能和性能改进。 **Git基础概念** 1. **版本控制**:Git的核心功能是版本控制,它能跟踪文件和目录...

    rh-git218-git-svn-2.18.2-1.el7.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    Git 官方原版 Git-2.34.1 32&64-bit 2022-07-12 Latest

    在下载并解压Git-2.37.1的32位和64位安装程序后,为了确保文件的完整性和安全性,你应该使用提供的校验文件(Git-2.37.1-32-bit.exe.txt和Git-2.37.1-64-bit.exe.txt)来验证Hash值。Hash值是一串唯一标识文件内容的...

    Git-2.12.0-64-bit 64位下载

    Git-2.12.0-64-bit 64位下载

Global site tag (gtag.js) - Google Analytics