git管理代码命令之我的个人习惯

本文详细介绍了Git的版本管理流程,包括主分支、开发分支、功能分支、预发布分支和修复bug的使用。讲解了如何创建、切换、合并分支,以及如何处理bug。此外,还涵盖了其他Git命令,如忽略文件管理、强制提交、查看文件历史、比较分支差异、下载指定分支或tag代码等。文章旨在帮助开发者规范Git操作并提高效率。
摘要由CSDN通过智能技术生成


一、版本管理

0.分支涉及

主分支: master
开发分支:develop
临时分支三种:
	功能(feature)分支
	预发布(release)分支
	修补bug(fixbug)分支

1.第一次下载代码master,这时会在本地建一个叫master的分支

git clone https://gitee.com/jxlhljh/gittest.git

注:所有提供给用户使用的正式版本,都在这个master主分支上发布,一般不在master分支上开发

2.接着在开发分支develop上进行开发

#如果远程还没有develop,创建并切换分支到develop
git checkout -b develop master
然后推送到远程
git push origin develop

#如果远程已经有develop,拉取远程的develop并关联本地分支develop
git checkout -b develop origin/develop

注:master主分支只用来分布重大版本,日常开发应该在另一条开发分支develop上完成。

3.开发时,一般是直接在develop分支上开发,如果为了开发某种特定功能,可以考虑采用临时性的功能分支开发。

功能分支的名字,可以采用feature-*的形式命名,创建一个功能分支如:
git checkout -b feature-x develop

开发完成后,将功能分支合并到develop分支
git checkout -b feature-x develop
git merge --no-ff feature-x

最后删除feature分支
git branch -d feature-x

4.开发完后要发布版本时,理想情况下,从开发分支分2步合并到master(但较少直接从develop直接到master,一般会走realease预发布)

切换到master分支
git checkout master

 对develop分支进行合并,将develop分支的代码合并到master
git merge --no-ff develop

5.常用的做法是采用release预发布分支作中转,如生成预发布分支。

比如准备发版1.0,将develop版本切成一个release-1.0的分支出来。
git checkout -b release-1.0 develop

经过功能测试确认,如果没有问题后,合并到master分支
git checkout master
git merge --no-ff release-1.0

对合并生成的新节点,做一个标签
git tag -a 1.2

再合并到develop分支
git checkout develop
git merge --no-ff release-1.0

最后,删除预发布分支
git branch -d release-1.0

6.修补bug

从master分支切出来一个bug分支进行bug修复,修复完把bug分支删除

修补bug分支是从master分支上面分出来的。修补结束以后,再合并进master和develop分支。它的命名,可以采用fixbug-*的形式

创建一个修补bug分支
git checkout -b fixbug-1.01 master

修补结束后,合并到master分支
git checkout master
git merge --no-ff fixbug-1.01
git tag -a 1.01


再合并到develop分支
git checkout develop
git merge --no-ff fixbug-1.01

最后,删除"修补bug分支":
git branch -d fixbug-1.01

注:本文内容部分参考此文https://www.ruanyifeng.com/blog/2012/07/git.html

二、其他命令等

将本地多余的远程分支删除

git remote show origin
git remote prune origin

如何同步本地tag与远程tag

git tag -l | xargs git tag -d  #删除所有本地分支
git fetch origin --prune #从远程拉取所有信息
git ls-remote --tags origin #查询远程tags的命令如下

切换到标签1.0.0

git checkout 1.0.0

查看远程tag

git tag --list

1.分支管理作相关命令

获取分支:$ git fetch
查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name]
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支方法1:$ git push origin :heads/[name]
删除远程分支方法2:git push origin --delete [name]

2.其他git命令

##强制更新远程覆盖至本地如: 
git reset --hard origin/develop

##如何清除git中Untracked files
git clean -f -d

##把另一个分支的一个或多个提交复制到当前分支,-x表示保留原作者信息
git cherry-pick commit1
git cherry-pick -x commit1
git cherry-pick -x commit1 commit2
我们如果想合并两个分支中的一部分,采用智能合并,思路:曲线救国,我们通过git merge 强大的分支合并功能来完成此次无缝合并
https://www.cnblogs.com/coderxx/p/11544550.html
1.首先使用git checkout根据A分支创建一个A_temp分支(避免影响A分支)
git checkout -b A_temp
2.然后将B分支合并到A_temp分支,此时两个都经修改过的文件会跑出冲突,我们只需解决冲突即可。
git merge B
3.再次切换到A分支,并使用git checkout 将A_temp分支上的系统消息功能相关文件或文件夹覆盖到A分支,此时可以大胆的覆盖!因为我们已经在第二步处理过冲突问题。
git checkout A
git checkout A_temp message.html message.css message.js other.js
git status
4.最后,可以刚刚根据分支A创建的A_temp删除。
git branch -d A_temp

3. 已跟踪文件进行忽略管理

##1.已跟踪文件加入忽略
git update-index --assume-unchanged .classpath

##2.已跟踪文件去除忽略
git update-index --no-assume-unchanged .classpath

##3.查看忽略
git ls-files -v|grep h\ 

4.git下载带账号和密码

git下载带账号和密码:
git clone http://userName:password@链接
git clone https://用户名:密码@git.coding.net/sample/HelloWorld.git

5.git导出干净的代码

git archive --format zip --output "../jthxwg.zip" master -0

6.git强制提交文件

git add -f application.properties

7.Git查看某一个文件的历史提交信息

git log 文件名
git log icds-cloud-view/src/main/java/cn/gzsendi/view/service/impl/ViewServiceImpl.java

8.git比较两个分支中的文件差异

##查看分支间的差异
git diff  分支1  分支2  --stat
git diff dev master --stat

##查看某个文件的差异
git diff dev master icds-cloud-view/src/main/java/cn/gzsendi/view/service/impl/ViewServiceImpl.java

9.git下载指定的分支或tag代码到本地

命令如:git clone --branch [tags标签] [git地址]

#下载指定的分支代码到本地
git clone -b master https://gitee.com/jxlhljh/gittest.git
git clone -b dev https://gitee.com/jxlhljh/gittest.git

#下载指定的TAG为master-20221229代码到本地
git clone -b master-20221229 https://gitee.com/jxlhljh/gittest.git

10.git还原某个文件

######如果文件已经添加到暂存区(进行了git add操作)1)先把文件恢复到未跟踪状态
git reset head [filepath]//单个文件
git reset head .//所有文件2)撤销文件修改(新的git版本也可以用git restore)
git checkout -- [filepath]//单个文件
git checkout .//所有文件

######如果文件未添加到暂存区
git checkout -- [filepath]//单个文件
git checkout .//所有文件

三、其他内容参考

1.第一次下载代码master,这时会在本地建一个叫master的分支

git clone https://gitee.com/jxlhljh/gittest.git

2.如果git源地址上新建了新的分支,执行下面的fetch拉取最新的分支信息

git fetch
git branch -a

3.切换到分支开发:checkout远程的1.0.0分支,在本地起名为1.0.0分支,并切换到本地的1.0.0分支

git checkout -b 1.0.1 origin/1.0.1
git branch可看到已经切换到1.0.0

$ git branch
* 1.0.0
  master

5.现在在1.0.0上修改bug等,提交

git add .
git commit -m "message content"
git push origin 1.0.0

6.合并到master

先切换到master

git checkout master

然后将1.0.0分支修改的代码合并到master

git merge 1.0.0 --no-edit

有冲突的话解决冲突,然后执行

git add .
git commit -m"message"

提交到远程

git push master

7.如何将本地目录和远程的 Git仓库关联起来

本地目录有代码但没有git管理起来,远程新建了一个空仓库,需要将本地目录代码提交,也可以这样做:

##初始化本地仓库 在本地目录中打开命令行或终端,然后运行以下命令来初始化一个新的 Git 仓库:
cd /path/to/your/local/directory
git init
这将在当前目录下创建一个新的 .git 目录,这个目录包含了所有的 Git 仓库数据。

##添加文件到本地仓库 将本地目录中的文件添加到 Git 仓库中,可以使用以下命令:
git add .
这个命令会添加当前目录下的所有文件到暂存区(Staging Area)。如果你只想添加特定的文件,可以使用 git add <file> 命令。

##提交更改 提交你的更改到本地仓库:
git commit -m "Initial commit"
这个命令会将暂存区中的更改提交到本地仓库,并附上一条提交信息 "Initial commit"。

##添加远程仓库 添加远程 Git 仓库的地址。你需要知道远程仓库的 URL,这通常是一个 HTTPS 或 SSH 地址。例如:
git remote add origin https://github.com/username/repository.git
这里的 origin 是远程仓库的默认名称,你可以根据需要更改它。https://github.com/username/repository.git 应该替换为你的远程仓库的实际 URL。

##推送到远程仓库 将你的本地更改推送到远程仓库:
git push -u origin master
这个命令会将你的本地 master 分支的更改推送到远程仓库的 master 分支。如果你使用的是其他分支,比如 main,请相应地替换分支名。-u 参数用于设置上游(tracking)关系,这意味着在未来的推送和拉取操作中,你可以简单地使用 git push 和 git pull 而不需要指定远程仓库和分支。

##如果远程仓库不为空,并且你想保留远程仓库的内容,你可能需要先拉取远程仓库的内容并合并到你的本地仓库中:
git pull origin master --allow-unrelated-histories
这个命令会拉取远程仓库的内容,并使用 --allow-unrelated-histories 选项来合并两个没有共同历史的仓库。

##完成这些步骤后,你的本地目录就和远程的 Git 仓库关联起来了。以后你可以继续使用 git push 来推送本地更改,使用 git pull 来获取远程仓库的更新。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值