Skip to content
On this page

把一个文件提交(commit)到了 Git 仓库,以后又想忽略它,可以这么做

  1. .gitignore文件中添加要忽略的文件路径
  2. 从 Git 的跟踪列表中删除该文件

    git rm --cached path/to/file 这个命令会从跟踪列表中删除文件,但不会删除工作目录中的实际文件。

  3. 提交.gitignore和删除跟踪文件的更改
git add .gitignore
git commit -m "Untrack file"

现在 Git 就会忽略对这个文件之后的更改,不会再跟踪它了。

另外,如果想把已经跟踪的目录忽略,要递归删除跟踪:

git rm -r --cached some-directory

总结下流程:

  1. 添加要忽略的文件/目录到 .gitignore
  2. 用 git rm --cached 将已跟踪的文件/目录从暂存区删除
  3. 提交 .gitignore 及删除文件的更改

这就可以让 Git 忽略原来已经跟踪的文件了,不再对其修改进行版本控制。

初次开发需求前,要先拉取生产/预发分支,然后基于这个分支之上,创建自己的特性分支进行开发

  1. 拉取生产/预发分支
git fetch origin master:master
  1. 基于拉取的分支创建自己的分支
git checkout -b feature-branch origin/master
  1. 开发完成后,将代码提交到自己的分支
git add .
git commit -m "feat: 开发完成"
  1. 提交代码到远程仓库
git push origin feature-branch
  1. 提交代码到远程仓库后,就可以发起 Pull Request 了

合并代码到主分支

  1. 切换到主分支
git checkout master
  1. 拉取主分支的最新代码
git fetch origin master
``

3. 合并自己的分支到主分支

git merge origin/feature-branch


4. 合并完成后,可以删除自己的分支

git branch -d feature-branch ``

  1. 提交合并后的代码到远程仓库
git push origin master

删除远程分支

git push origin --delete feature-branch

删除本地分支

git branch -D feature-branch

代码合并错误,并且已经推送到远程分支,如何解决?

假设是在本地合并,本来要把特性分支合并到 uat 分支,结果不小心合到了 release 分支

首先切换到特性分支合并到的错误分支,比如是 release

git checkout release

然后查看最近的合并信息(按 q 退出查看)

git log --merges

找到合并的 commit id,比如是 1234567890

然后撤销合并

git revert 1234567890

撤销远程仓库的推送

git push origin release --force

cherry-pick 指令

  1. 作用:选择某些提交的变更并将其应用到当前分支
  2. 与 merge 的区别:如果你需要另一个分支的所有代码变动。那么就采用 merge;如果你只需要部分代码变动(某几个提交),那么就采用 cherry-pick
  3. 场景:有时候分支不一定是完全按照需求号来开发的,可能按照周期来进行开发,那当前版本内的分支上,可能就会包含着很多需求的提交,这时候,如果产品要求你只上某一个需求,但是其他的暂时还不能上,那就需要使用到 cherry pick 的操作,将该需求囊括的所有提交应用到对应环境分支上。「一定要注意梳理清楚被拆分需求是由多少 commit 组成的,不要有遗漏和多选。」
## 查看最近提交(按 q 退出查看)
git log

## 切换到要应用的分支(比如提测时)
git checkout test

## 将指定的提交应用于当前分支(commitHash 就是通过第一步查询到的),这会在当前分支产生一个新的提交
git cherry-pick <commitHash>

代码回滚

  1. 回滚到指定的 commit id
git reset --hard <commit id>
  1. 回滚到上一个 commit id
git reset --hard HEAD^
  1. 回滚到上上一个 commit id
git reset --hard HEAD^^
  1. 回滚到上 100 个 commit id
git reset --hard HEAD~100

查看本地分支与之相对应关系等信息

git remote show origin

删除远程仓库中删除的分支的引用。(用到)

git fetch --prune
或者 git fetch --all && git remote prune

删除或者说同步本地分支

git remote prune origin

可以使用 -n 选项来先模拟执行这个清理操作,查看将要删除哪些引用。 git remote prune origin -n

上次更新于: