提交(Commit)
查看HEAD上最近一次的提交(commit)
修改提交信息(commit message)
git commit --amend --only
git commit --amend --only -m 'xxx'
|
修改提交的用户名和邮箱
git commit --amend --author 'new authorname email'
|
从一个提交移除一个文件
git checkout HEAD^ myfile
git add -A
git commit --amend
|
删除最后一次提交
git reset HEAD^ --hard
git push -f [remote][branch]
git reset --soft HEAD@{1}
|
删除任意提交
git rebase --onto SHA1_OF_BAD_COMMIT^ SHA1_OF_BAD_COMMIT
git push -f [remote][branch]
|
强推到远端
git push -f origin my-branch
|
硬重置(hard reset)后,找回内容
git reflog
git reset --hard SHA1234
|
暂存(Staging)
把暂存(staging)的内容添加到上一次的提交
只暂存一个新文件的一部分,不是全部
git add --patch[-p] filename.x
git add -N filename.x
|
把在一个文件里的变化(changes)加到两个提交里
把暂存的内容变成未暂存,把未暂存的内容暂存
git commit -m "WIP"
git add .
git stash
git reset HEAD^
git stash pop --index 0
|
未暂存(Unstaged)
把未暂存(unstaged)的内容移动到一个新分支
git checkout -b my-branch
|
把未暂存的内容移动到另一个已存在的分支
git stash
git checkout my-branch
git stash pop
|
丢弃本地未提交的变化(uncommitted changes)
// one commit git reset --hard HEAD^
// two commits git reset --hard HEAD^^
// four commits git reset --hard HEAD~4
git checkout -f
git reset filename
|
丢弃某些未暂存的内容
git checkout -p
git stash -p
git reset --hard
git stash pop
git stash drop
|
分支(Branches)
从错误的分支拉取了内容,或把内容推送到了错误的分支
git reflog
git reset --hard [hash]
|
丢弃本地的提交,以便本地分支与远程保持一致
git status
git reset --hard origin/branch
|
需要提交到一个新分支,但错误的提交到了main
git branch my-branch
git reset --hard HEAD^
git reset --hard [hash]
|
保留来自另一个ref-ish的整体文件
git add -A && git commit -m "commit message"
git checkout solution -- file.txt
|
删除上游(upstream)分支被删除了的本地分支
不小心删除了分支
git checkout -b my-branch
git branch
git reflog
git checkout -b my-branch
|
删除一个远程分支
git push origin --delete my-branch
git push origin :my-branch
|
删除一个本地分支
从别人正在工作的远程分支迁出(checkout)一个分支
git fetch --all
git checkout --track origin/[branch]
|
Rebasing和合并(Merging)
撤销rebase/merge
git reset --hard ORIG_HEAD
|
已经rebase,但不想强推(force push)
git checkout my-branch
git rebase -i main
git checkout main
git merge --ff-only my-branch
|
需要组合(combine)几个提交
git reset --soft main
git commit -am "new awesome feature"
git rebase -i main
git rebase -i HEAD~2
|
安全合并(merging)策略
git merge --no-ff --no-commit my-branch
|
将一个分支合并成一个提交
git merge --squash my-branch
|
组合(combine)未推的提交
检查是否分支上的所有提交都已经合并
git log --graph --left-right --cherry-pick --outline HEAD...feature/120-on-scroll
git log main ^feature/120-on-scroll --no-merges
|
暂存所有改动
暂存指定文件
git stash push working-directory-path/filename.ext
git stash push working-directory-path/filename1.ext working-directory-path/filename2.ext
|
暂存时记录消息
git stash save <message>
git stash push -m <message>
|
使用某个指定暂存
git stash list
git stash apply "stash@{n}"
git stash apply "stash@{2.hours.ago}"
|
暂存时保留未暂存的内容
git stash create
git stash store -m "commit message" CREATED_SHA1
|
杂项
克隆所有子模块
git clone --recursive git://github.com/foo/bar.git
git submodule update --init --recursive
|
删除标签(tag)
git tag -d <tag_name>
git push <remote> :refs/tags/<tag_name>
|
恢复已删除标签
git fsck --uncreachable | grep tag
git update-ref refs/tags/<tag_name> <hash>
|
跟踪文件(Tracking Files)
只改变一个文件名字,不修改内容
git mv --force myfile MyFile
|
从Git删除一个文件,但保留该文件
配置(Configuration)
缓存一个仓库(repository)的用户名和密码
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
|
修改远程分支名
git branch -m oldbranch newbranch
git push --delete origin oldbranch
git push origin newbranch
git branch --set-upsteam-to origin/newbranch
|
赏
使用微信打赏
使用支付宝打赏
雅致寓于高阁渔舟唱晚,古典悠然;
格调外发园林绿树萦绕,馥郁清香。
扫描二维码,分享此文章