Git魔法手册:这20个技巧让你代码管理效率提升500%

1.配置全局用户信息

git config –global user.name “你的用户名” git config –global user.email “你的邮箱”

2.查看文件状态

git status

3.暂存文件

git add .

4.提交文件到本地代码库

git commit -m “提交信息”

这一步和上一步可以合并为git commit -a -m “提交信息”

5.撤销更改

git checkout — 文件名 此命令撤销对工作区某文件的修改。

git reset –hard [commit] 将工作区和暂存区的内容强制修改为commit时本地代码库的状态

git reset –mixed [commit] 将暂存区的内容强制修改为commit时本地代码库的状态,工作区的内容不变

git reset –soft [commit] 将本地代码库的内容修改为commit时的状态,暂存区和工作区的内容不变

6. 拉取分支

1)git fetch 拉取最新代码到本地

2)git pull 拉取最新代码到本地并进行合并,默认是git pull –merge的功能

3)git pull –rebase 拉取最新代码到本地,成为最新的基版,并将本地修改附加到最新的基版上

7.分支管理

可以使用git branch命令查看当前所有分支,使用git checkout -b 分支名 命令创建并切换到新分支,使用git merge 分支名 命令将指定分支合并到当前分支。

8. 克隆远程仓库到本地

git clone “https://xxx/abc.git”

9.推送本地分支到远程

git push origin master

10.使用别名简化命令

以下为设置git status命令为简单的别名st

git config –global alias.st status

11.忽略特定文件或目录:

在项目根目录下创建一个名为.gitignore的文件,并在其中列出需要忽略的文件或目录模式。这样,Git在提交时会自动忽略这些文件或目录。

但是,当一个文件a.txt已加入版本控制后,再用.gitignore文件去忽略这个文件就不可以了。这时需要将a.txt从暂存区中移除到工作区:

git rm –cached a.txt

然后再将a.txt文件加入到.gitignore文件中即可。

若需要过滤一个目录.idea,则可以这样:

git rm -r –cached .idea

12.建立远程仓库

1)在远程服务器上创建仓库,例如仓库url为:

https://www.xx.com/abc.git

2)初始化本地仓库

git init

3)添加并提交文件到本地代码库

git add . # 添加所有文件到暂存区

git commit -m “Initial commit” # 提交文件并添加提交信息

4)关联远程仓库

git remote add origin <远程仓库的URL>

5)推送本地仓库到远程仓库

git push -u origin master # 如果是 master 分支

若本地仓库无法合并远程仓库,可能是由于本地和远程仓库有未合并的无关联的历史代码,此时可以合并远程的无关联的历史代码后再提交本地代码:

git fetch

git merge origin/master –allow-unrelated-histories

13.操作代码库

git rebase 用于整理提交历史。其基本思想是取出一个分支的修改,然后在另一个分支上重新应用这些修改。这一般用于将一个分支的更改集成到另一个分支,同时保持一个清晰、线性的提交历史。而使用git merge时会多出一个merge commit,git提交历史结构会混乱。

以下是 git rebase 的一些用法和概念:

1)合并多个提交:如果你在一个分支上进行了多次提交,并且想要将这些提交合并成一个单一的提交,你可以使用 git rebase -i(交互式 rebase)来达到这个目的。通过编辑 rebase 过程中的提交列表,你可以将多个提交压缩成一个。

2)将提交从一个分支移动到另一个分支:假设你在一个特性分支上进行了一些更改,然后想要将这些更改整合到主分支上,同时保持主分支的提交历史清晰。你可以使用 git rebase 将特性分支的提交重新应用到主分支上。

3)解决合并冲突:在 rebase 的过程中,如果遇到合并冲突,你需要手动解决这些冲突,然后使用 git rebase –continue 继续 rebase 过程。如果在解决冲突时遇到问题,想要放弃 rebase,可以使用 git rebase –abort 来撤销整个 rebase 操作。

4)变基(Rebase)与合并(Merge)的区别:与 git merge 不同,git rebase 不会创建一个新的合并提交来整合两个分支的更改。相反,它会将你的分支更改放在另一个分支的顶部,从而保持一个线性的提交历史。这可以使提交历史更加清晰,但也可能导致在公共分支上工作的其他人遇到麻烦,由于 rebase 会改变提交的历史。

彩蛋:

当你还在用git add/commit/push三连时,高手已经用这些技巧优雅地管理着百万行代码。掌握它们,你就是团队中最耀眼的工程师!

Git不仅仅是版本控制工具,更是程序员的时间机器和后悔药。今天,我将分享那些真正提升效率的Git技巧,让你告别繁琐操作,拥抱优雅的代码管理。

一、基础进阶:超越add/commit/push

# 传统三连
git add .
git commit -m "fix"
git push origin master
# 进阶一步到位
git commit -am "fix" && git push

但真正的进阶远不止于此:

智能提交:

# 选择性提交(交互式选择代码块)
git add -p
# 修正上次提交(避免无意义的小提交污染历史)
git commit --amend

最新版的Android Studio中也集成了可以提交一个文件中部分修改的代码块的功能,超级的便捷。

二、分支管理的艺术

分支管理是Git最强劲的功能之一:

# 快速切换分支(自动智能匹配)
git checkout -b feature-payment
# 优雅合并(保持历史清晰)
git merge --no-ff feature-payment
# 分支清理(保持仓库整洁)
git branch -d feature-old
git branch -D feature-abandoned  # 强制删除未合并分支

三、时间旅行:找回丢失的代码

这是Git最神奇的能力:

# 查看操作历史(找到丢失的commit)
git reflog
# 回到任意时间点
git reset --hard commit_hash
# 临时保存工作现场
git stash
git stash pop
# 找回被删除的分支
git branch recovered-branch commit_hash

四、高级调试技巧

Git让bug定位变得简单:

# 二分法定位问题commit
git bisect start
git bisect bad
git bisect good v1.0
git bisect reset
# 查看某行代码的最后修改者
git blame filename.py

五、团队协作规范

这些技巧让团队协作更顺畅:

# 清晰的commit信息规范

feat: 添加支付宝支付功能

fix: 修复订单金额计算错误

docs: 更新API文档

style: 调整代码格式

refactor: 重构用户认证模块

# 优雅的PR提交

git rebase -i HEAD~3 # 合并最近3个commit

git rebase命令不只有上述这个功能,它的完整功能介绍如下:

# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
#                    commit's log message, unless -C is used, in which case
#                    keep only this commit's message; -c is same as -C but
#                    opens the editor
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
#         create a merge commit using the original merge commit's
#         message (or the oneline, if no original merge commit was
#         specified); use -c <commit> to reword the commit message
# u, update-ref <ref> = track a placeholder for the <ref> to be updated
#                       to this position in the new commits. The <ref> is
#                       updated at the end of the rebase

六、实战场景解决方案

场景1:紧急bug修复

git stash
git checkout main
git checkout -b hotfix-critical-bug
# 修复bug
git commit -am "fix: 紧急修复支付漏洞"
git checkout main
git merge --no-ff hotfix-critical-bug
git stash pop

场景2:同步上游仓库

git remote add upstream original_repo_url
git fetch upstream
git merge upstream/main

七、性能优化技巧

处理大仓库的秘诀:

# 部分克隆(节省下载时间)
git clone --filter=blob:none https://repo.com/project.git
# 稀疏检出(只下载需要的目录)
git sparse-checkout init --cone
git sparse-checkout set app/src tests

八、安全与备份

代码安全同样重大:

# 签名提交(验证身份)
git commit -S -m "安全更新"
# 自动备份到多个远程仓库
git remote set-url --add --push origin main_repo
git remote set-url --add --push origin backup_repo

九、个性化配置

让Git更懂你:

# 别名配置(~/.gitconfig)
[alias]
    co = checkout
    br = branch
    ci = commit
    st = status
    lol = log --oneline --graph --decorate
    fixup = commit --fixup
    ri = rebase -i

十、避坑指南

慎用 git push -f,除非你确定不会影响他人

定期 git fetch –prune 清理远程已删除分支

重大操作前 先git status确认当前状态

结语

Git就像程序员的超能力,掌握这些技巧,你就能在代码的时空中自由穿梭。从今天开始,告别笨拙的Git操作,用这些技巧提升你的开发效率,成为团队中的Git专家!

记住,真正的Git高手不是记住所有命令,而是知道在什么场景下使用什么命令。目前,打开终端,开始你的Git魔法之旅吧!

思考题:你在Git使用中遇到过最棘手的问题是什么?欢迎在评论区分享你的解决方案!

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
浮気蜜桃的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容