📜  Git-隐藏操作(1)

📅  最后修改于: 2023-12-03 15:00:58.115000             🧑  作者: Mango

Git 隐藏操作

Git 是目前最为流行和广泛使用的版本控制工具之一。除了我们熟知的基本操作之外,还有很多隐藏的操作可以帮助程序员更好地使用 Git。

1. Git Stash

git stash 命令可以把当前工作现场储藏起来,等以后恢复现场后继续工作。这在实际开发中很有用,比如在紧急bug修复时,需要暂时放弃当前的开发任务,立刻修复bug。使用 git stash 命令可以将当前工作现场保存下来,等修复完bug后再回来继续原来的开发。

具体用法如下:

git stash

此时,Git 会将当前的工作现场储藏起来,并将项目中的文件恢复到干净的状态。这样你就可以开始紧急bug修复了。修复完成后,使用下面的命令可以恢复工作现场:

git stash pop

此时,Git 会将之前储藏的工作现场恢复回来,并且继续原来的开发工作。

2. Git Aliases

Git Aliases 可以理解为 Git 命令的别名。我们可以将常用的 Git 命令设置为别名,以简化操作。比如,将 git status 命令简化为 gsgit commit 命令简化为 gc

具体用法如下:

git config --global alias.alias_name git_command

其中,alias_name 是自己定义的别名,git_command 是真实的 Git 命令。

例如,将 git status 命令简化为 gs

git config --global alias.gs status

这样,以后就可以使用 git gs 命令来代替 git status 命令了。

3. Git Bisect

git bisect 命令可以帮助我们定位引入 bug 或者问题的提交。具体做法是:将 bug 的提交标记为 BAD,将上一次的没有问题的提交标记为 GOOD,Git 会自动帮助我们查找引入 bug 的提交。

具体用法如下:

  1. 首先,开始一个 Git Bisect 会话:
git bisect start
  1. 将当前这个版本标记为 BAD:
git bisect bad
  1. 将之前的一个版本标记为 GOOD:
git bisect good HEAD@{n}

其中,n 是指当前 HEAD 前面的第 n 个提交。

  1. 接下来,就可以开始查找引入 bug 的提交了:
git bisect run test_command

其中,test_command 是测试命令,它会在每次测试一个新版本之前执行。测试命令可以自己定义。如果测试命令返回 0,那么当前版本被认为是没有问题的,继续向前搜索;否则被认为有问题,继续向后搜索。

  1. 最终会在一个提交上停住。如果这个提交是引入 bug 的提交,可以使用以下命令查看详细信息:
git show
4. Git Rebase

git rebase 命令可以将当前分支上的提交全部基于另一个分支进行重放。这样做的好处是,可以将提交历史保持在一条线上,避免因为合并分支而产生的分支历史混乱。

具体用法如下:

  1. 首先,切换到需要操作的分支:
git checkout feature_branch
  1. 然后,基于主分支进行 rebase:
git rebase master

此时,Git 会将本分支上的所有提交以及主分支上的所有提交进行合并,并重新按照提交时间顺序排序,产生出新的一条提交历史线。

  1. 最后,将 rebase 后的分支合并到主分支:
git checkout master
git merge feature_branch
5. Git Cherry-pick

git cherry-pick 命令可以将另一个分支上的某个提交应用到当前分支上。这个命令在实际开发中很有用,比如我们在修复一个 bug 的时候,可能需要将其他分支中的某些提交应用到当前分支上。

具体用法如下:

  1. 首先,切换到需要应用提交的分支:
git checkout other_branch
  1. 然后找到需要应用的提交 hash:
git log
  1. 最后将需要应用的提交应用到当前分支:
git cherry-pick commit_hash

其中,commit_hash 是需要应用的提交 hash。

总结

以上是 Git 的一些隐藏操作,它们可以帮助程序员更加高效和方便地使用 Git。希望能够对开发者们的工作有所帮助。