一、版本管理
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 来获取远程仓库的更新。