Git 基础操作



前言

本文记录一下日常使用 Git 过程中用到的一些操作,更多操作可使用git --help 或者 man 手册进行查看。


基础操作

1. 基础配置

# 列出所有配置
git config -l
# 设置全局配置(也可针对每个仓库分别设置)
git config --global user.name <name>
git config --global user.email <email>
git config --global http.proxy <proxy_url>

2. 远程仓库拉取

git pull <remote_repo_url>

3. 分支处理

# 基于特定提交创建一个新分支
git checkout -b new-branch <commit-hash>

# 删除一个分支
git branch -d <branch_name>
git branch -D <branch_name> # 直接删除未提交的分支

4. 添加未追踪文件到索引

# 添加所有文件
git add -A .

# 添加指定文件
git add <file_path>

5. 删除所有添加但是未被跟踪的文件

git clean -df

6. 推送到远程仓库

git push origin HEAD:refs/for/<branch>

7. 上游代码合并

  • 将上游仓库添加为远程仓库
git remote add upstream <upstream-repo-url>
  • 拉取上游社区代码
git fetch upstream
  • 切换到需要合并的分支
git checkout <your-branch>
  • 合并上游仓库代码
// 合并最新代码
git merge upstream/<branch>

// 合并某一个分支之前的代码
git merge <commit hash>

8. 合并本次提交到之前的提交(不需要再次commit)

git commit --amend --no-edit

9. 合并多个commit到一个commit

注意:commitID 为需要 pick 的上一个的commit。

git rebase -i <commitID>
// 然后修改待合并的commit为sqush(或 s )

例如:把 fbdee2e6 之后提交的commit合并到 fbdee2e6 中

commit efd4880c297b439bf6d87006233b5ffb6483d57c (HEAD)
commit bd0f2bbf3a4fa690c4007dc06d3b4a89ed6d261e
commit fbdee2e67b86902cacaf1718d6c1434f8be05c03
commit 59f442377a72d9df76fbb4167ab803411817a2ca
git rebase -i 59f442377a72d9df76fbb4167ab803411817a2ca

得到:
pick fbdee2e67b commit3
pick bd0f2bbf3a commit2
pick efd4880c29 commit1

修改后保存退出:
pick fbdee2e67b commit3
s bd0f2bbf3a commit2
s efd4880c29 commit1

10. commit的时候附带sign-off

git commit -m -s "<commit>"

11. 使用git工具打patch

# 根据两个hash值进行对比
git diff <commit_hash_1> <commit_hash_2> > patch_file.patch

# 对比当前HEAD与上一次提交的patch
git format-patch HEAD~1

12. 应用patch

# 应用patch
git apply patch_file.patch

# 合并可以合并的代码,并输出冲突到文件
git apply --reject patch_file.patch

# 将补丁应用并且创建一个新的提交
git am -3 < patch_file.patch

总结

本文只列出 git 部分命令,后续会继续补充相关内容。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐