在本地 master 分支上做了一个commit ( 38361a68138140827b31b72f8bbfd88b3705d77a ) , 如何把它放到 本地 old_cc 分支上?
需要先切到old_cc分支上然后git cherry-pick <commit id>,commit id为需要提交代码的commit_id,
这时通过git log你可以发现,git的最后一次提交已经变成你选的那个了,这时再使用:
git commit --amend 来对commit进行修改。然后git push即可完成!
git revert <commit id>回退提交的代码,然后git push即可生效
git reset --hard强制将本地代码还原至上次拉的节点只要不操作git push没事!
git reset --hard commit_id 强制将本地代码还原至某个节点
回退并且更新整套代码:
repo forall -c git clean -fd && repo forall -c git reset --hard HEAD && repo sync
git checkout的主要功能就是迁出一个分支的特定版本。默认是迁出分支的HEAD版本
示例:
git checkout master //取出master版本的head。
git checkout tag_name //在当前分支上 取出 tag_name 的版本
git checkout master file_name //放弃当前对文件file_name的修改
git checkout commit_id file_name (或者路径)//取文件file_name的 在commit_id是的版本。commit_id为 git commit 时的sha值。
生成patch
之前提交的记录
git log <== to git the previous commit hash code.
git format-patch -s 38361a68138140827b31b72f8bbfd88b3705d77a
或者使用
git format-patch HEAD^ <==最近的1次commit的patch
git format-patch HEAD^^ <==最近的2次commit的patch
git format-patch HEAD^ <==最近的3次commit的patch
git format-patch HEAD^ <==最近的4次commit的patch
将补丁打上去。
patch -p1 < 0001-Added-xxxx-test.patch
注: 0001-Added-xxxx-test.patch为想要打的补丁的名字。运行该命令需在git项目的要目录下。
强制还原更新代码
repo forall -c git clean -fd && repo forall -c git reset --hard HEAD && repo sync -j24
git show COMMIT_ID: 看某笔patch
git revert COMMIT_ID: 将某笔patch还原