
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 config --global core.editor vim
如果修改了已经推送的提交,则需要强制推送
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 #应用并创建提交
工作树
worktree可以将多个分支分布在不同的路径下,且共用一个git仓库。他们之间可以互相协作(megre、cherrypick)
git worktree add /pathtoworktree brach #为brach分支在/pathtoworktree位置创建worktree
git worktree list #列出所有worktree
git worktree prune #删除worktree目录后再执行
Git配置
git config --list #获取默认配置
git config --global http.proxy http://127.0.0.1:7890 #更改http代理设置
git config --global https.proxy http://127.0.0.1:7890 #更改https代理设置

