Posts git
Post
Cancel

git

覆盖本地文件

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
This post is licensed under CC BY 4.0 by the author.