覆盖本地文件
1
2
3
4
5
6
7
# 同一个仓的远程分支覆盖本地分支
git fetch --all
git reset --hard origin/master
# 用remote仓的分支覆盖本地分支
git fetch mindspore # mindspore是remote add的仓
git reset --hard mindspore/master
撤销add
1
git reset HEAD <file>
patch命令
1
2
3
4
5
6
7
git diff > patch // 本地变更,git diff的内容,生成patch文件
git diff branchname --cached > patch // branch之间差分生成patch文件
git format-patch 节点A 节点B // 两个节点之间的patch
git format-patch -1 节点A //节点A的修改的patch
stash
1
2
3
git stash list
git stash show -p stash@{0} // 显式第0次(最新一次)stash的内容
查看分支创建的时间
1
2
3
git reflog show --date=iso branch_name
git show commit-id
cherry-pick
使用cherry-pick
在两个项目之间共享代码。
目标
我们要把A项目中的部分代码移植到本项目里。
思路
- 每个项目可有多个remote origin。比如在B项目里,设置A项目的origin url
- 在B项目里面,把需要的branch拉一份在本地
- 找到想要的commit-id,使用cherry-pick命令
- 如果有冲突,就解决冲突
具体步骤
通过
git remote add
命令设置A
项目为B
项目的remote origin
1 2 3 4 5
# 在B项目仓里 git remote add A项目名 A项目的git链接 # 删除远程仓库 git remote rm A项目名
通过fetch命令将A项目的分支拉到本地
1
git fetch A项目名
使用cherry-pick commint-id命令, -n是选择不直接commit
1
git cherry-pick -n commit-id
如果有冲突,通过
git status
查看冲突情况,解决冲突解完冲突,继续
cherry-pick
1
git cherry-pick --continue
1
2
3
4
5
6
7
graphlearning:
git fetch graphlearning && git merge graphlearning/master && git push
mindspore:
git fetch mindspore && git merge mindspore/master && git push
git commit --amend --author="zuochuanyong <zuochuanyong@huawei.com>"
1
2
3
4
5
6
7
git config --global --unset http.https://github.com.proxy
git config --global --unset https.https://github.com.proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
git submodule sync
git submodule update --init --recursive