tips:
- git pull大项目之前,git fetch -p把多余分支删掉,可以拉得快一点
【已测】cherry-pick
【谨慎使用】
git cherry-pick commit_id
- 多个commit:
git cherry-pick commit_id1 commit_id2
- 有冲突时解决了,add后git cherry-pick --continue
- push
头指针分离
【已测】git 强制拉取并覆盖本地文件
- 需要将这些更新取回本地,这时就要用到git fetch命令,
git fetch --all
- 撤销本地、暂存区、版本库(用远程服务器的origin/develop替换本地),
git reset --hard origin/develop
- git pull 来从远程仓库develop分支拉取同步代码,
git pull origin develop
撤销commit
- git撤销commit(本地):git reset 命令
- Git基础-撤销远程commit
git reset HEAD^
git status
git add .
git commit -m ""
git push --force origin HEAD
【已测】rebase
为了将 develop 分支上最新的代码 rebase 到 myFeat 分支,可以:
- 切换到 develop 分支,git pull origin develop;
- 切回到 myFeat 分支,git rebase develop。
来回切换分支有点繁琐,其实可以不切换分支,一句命令搞定这个需求:
git pull --rebase origin develop(然后立马git push origin HEAD -f)
【已测】rebase分支到分支(包括push):(注意把feature改为自己的分支名)
-
feature分支只有你一个人在开发
git push --force origin HEAD
此时没有其他人会进行提交操作,那么可以直接进行强制推送 git push --force origin feature ,–force可以直接理解为用你本地分支的状态区覆盖掉远端origin分支的状态,也就是执行过后,本地的分支什么样,远端分支就什么样 -
feature分支有多人开发
此时如果你贸然的使用–force命令,会有覆盖掉其他人提交代码的风险。比如,小明和小红两个人同时在feature分支上进行开发,小明已经在feature分支上提交了一部分代码,而小红此时执行了rebase操作,所以如果想要推送到远端仓库就必须使用 - -force 参数,而小红推送成功之后就会覆盖掉小明提交的代码(前面说过–force就是用本地状态覆盖掉远端状态)。在这种情况下,推荐另外一种更安全的命令 git push --force-with-lease origin feature 使用该命令在强制覆盖前会进行一次检查如果其他人在该分支上有提交会有一个警告,此时可以避免福改代码的风险。 -
中途退出rebase:git rebase —abort
【已测】error: 您需要先解决当前索引的冲突
【已测】删除远程分支和本地分支
删除远程分支和本地分支
远程:git push origin --delete branch_name
本地:git branch -d branch_name
// 如果删除不了,执行强制删除命令:
git branch -D branch_name
【已测】git从某个分支创建新分支
git合并commit为一个
- git 如何合并 commit ?(必看篇) (优先这个)
- 【饥人谷技术博客】 git将几个commit合成一个
revert
撤销revert/commit/rebase
- git rebase 成功之后撤销的操作方法
- 执行git reflog查看本地记录,找到对应commit id
git reset --hard xxxxxx
(xxxxxx为commit id)
- git pull origin master --rebase如何取消
【已测】git amend
只修改commit信息或内容,合并为同一个commit。https://blog.youkuaiyun.com/zbsmx/article/details/121648553
git add .
git commit --amend -m “new message”
git commit --amend --no-edit
然后再push就行:git push --force origin HEAD(个人开发的分支用这个
git 如何取消add操作
这里仅取消提交到库存区这个动作,只撤消动作,修改的文件不变
可以直接使用命令
git reset HEAD
这个是整体回到上次一次操作
绿字变红字(撤销add)
【已测】git 根据tag创建分支
Git - 执行git pull 一直报错 error: cannot lock ref
执行git pull 一直报错 error: cannot lock ref
解决办法:
git remote prune origin
git pull origin master
git 丢弃未跟踪的本地修改
GIT 如何 CHECKOUT 某個TAG
從Stack overflow來的答案:
先利用 git clone 抓取整個repository
再利用 git tag -l 列出全部的tag清單
最後用 git checkout <tag_name>
重命名文件(git对大小写不敏感)
git stash
做完操作记得快点git stash pop
git stash needs merge,可能是因为有已经add的文件,git restore --staged .后可急需stash