未分类

git常用操作

git命令与操作

1. 还原到某次提交

git reset --soft <commit ID> #仅重置当前分支的指针到指定的提交,保留所有更改
git reset --soft <commit ID> #重置索引,保留工作目录中的更改
git reset --hard <commit ID> #重置当前分支的指针,保留期间的更改

2.解决冲突

git checkout --theirs -- <binary-file> #保留引入的修改
git checkout --ours -- <binary-file> #保留现有的修改
git add <binary-file> #将修改的文件添加到暂存区

3.提取单次提交

git cherry-pick <commit-hash>

4.变基

git rebase -i HEAD~n #变基最近的n次提交

执行后会显示编辑器:

pick abcdef1 Commit message 1 #这里不要修改提交信息,只修改命令选择需要的提交
pick abcdef2 Commit message 2
pick abcdef3 Commit message 3

pick命令可修改为:

  • pick:保留提交
  • reword:保留提交并修改提交信息
  • edit:保留提交并允许你修改内容
  • squash:将此提交与前一个提交合并
  • fixup:与前一个提交合并,不保留提交信息
  • drop:删除提交

如果修改了已经推送的提交,则需要强制推送

git push origin <branch-name> --force-with-lease

撤销提交

会生成一个反向提交,提交的内容是要撤销的提交的反向更改。

git revert <commit_hash>
git revert -n <commit_hash> #保留反向修改,但不提交

fork仓库的同步

git remote -v #查看远程仓库信息
git remote add upstream <url>
git fetch upstream
git checkout master
git merge upstream/master
git push

补丁文件

生成补丁文件

git format-patch -1 <commit_hash>
git format-patch -3 #生成最近的 3 个提交的补丁
git format-patch -3 -o /path/to/patches #指定生成路径

git stash show -p > stash_patch.patch #最近一次stash
git stash show -p stash@{index} > stash_patch.patch #指定的stash

git diff > changes.patch #未提交的修改生成补丁文件
git diff --cached > staged_changes.patch #从暂存区生成补丁文件

#生成两个提交之间的补丁文件
git diff <commit1> <commit2> > changes_between_commits.patch

#从base_branch到feature_branch的提交生成补丁文件
git format-patch <base_branch>..<feature_branch>

应用补丁文件:

git apply my_patch.patch
git am my_patch.patch #应用并创建提交

留言

您的电子邮箱地址不会被公开。 必填项已用*标注