查看不同
git diff
git diff HEAD
git diff --cached
撤销改动
还未提交到暂存区
git checkout .
已经提交到暂存区
git reset
git checkout .
已经提交到暂存区,之后又对工作区进行改动
git checkout .
git reset
git checkout .
版本回退
工作区、暂存区、仓库区全都回退到某个版本
git reset --hard commit_id
撤销当前分支历史上的某个 commit 的内容,这个 commit 可以来自合并的分支,但是不能是未合并过的其他分支上的 commit。之后会生成一个新的 commit
git revert commit_id
如果有文件冲突,解决冲突
git add .
git revert --continue
重新规划 commit_id 之后的提交信息,相当于将 commit_id 之后的各个 commit 重新提交,可以修改某次提交的信息,可以删除某次提交,也可以合并相邻的提交
git rebase -i commit_id
删除某次提交的时候,如果有文件冲突,解决冲突
git add .
git rebase --continue
分支操作
合并其他分支,需要保留合并痕迹
git checkout develop
git merge feature-user --no-ff
# 合并之后,develop 分支就拥有了 feature-user 分支的所有提交的内容
合并远程的同源分支,不需要保留合并痕迹
git checkout develop
git rebase origin/develop
# 以 origin/develop 的最后一个 commit 为基础,重新提交 develop 的新的 commit
git rebase --onto 的使用
git rebase --onto commit_1 commit_2 commit_3
# 保留 commit_2 到 commit_3 之间 (不包括 commit_2,包括 commit_3) 的所有 commit,将这些 commit 接到 commit_1 后面
# commit_3 必须是某个分支的最后一个 commit
# 可以用于删除某几个历史提交,commit_1 删除的起点之前的提交,commit_2 删除的终点,commit_3 最后一个 commit
远程操作
git push
git pull
git fetch
git merge origin/dev
git fetch
git rebase origin/dev
网友评论