- fetch & merge
git fetch origin xxx #从远端拉分支xxx到本地,适用于本地无xxx而远端有xxx分支的情况
git log -p xxx origin/xxx #本地xxx和远端xxx对比差异
git merge origin/xxx #进行合并
git fetch oriign master:yyy #将远端master分支拉下来新建一个yyy分支保存
git diff yyy #将yyy和xxx分支对比
git merge yyy #将yyy和xxx进行merge
git pull origin master #相当于从远端fetch下来并merge到本地分支。
- git stash/ git cherry-pick
在开发过程中,来了另外一个活儿,这个时候既不想删除原来的更改,也不想将这些更改commit到待提交区,这个时候可以用git stash将更改的内容存储起来,git stash类似于快照,将现在状态保存起来,放入到一个特殊的栈中。这个时候切换到新活儿的分支中,干完活儿后,git stash pop将之前存在栈顶的对象取出来。
git satsh list #查看存储列表
git stash #添加一个存储对象
git stash pop #取出一个存储对象并从对象栈中删除
git stash save "xxxx" #给这次暂存取个别名
git stash apply stash@{0} # 取指定的存储对象。但是不删除栈内的对象
git stash drop stash@{0} # 从栈中删除指定存储对象。
git stash show #查看stash中保存的差异
其他:
git branch -d Chapater8 #删除本地分支
git reflog #查看本地记录,
git reset --hard 02a3260 #回到某个节点(如果节点后面有合并,将合并的内容打散)
git cherry-pick 02a3260 #将本地其他分支的某个节点合并到本分支。
git show nodeID #查看ID修改信息
git clone git@github.com:vnpy/vnpy.git myDirName # 克隆时指定本地目录的名称
- 分支A远端合入master,本地又新增了更改,别人从分支A拉了一个分支B,怎么将本地改变合入到分支B ?
- 如果没有git commit:先git stash暂存更改,然后git checkout B ,在git stash apply将暂存的内容merge到分支B
git stash ; git stash apply stash@{0};
- 如果已经commit: 使用 git cherry-pick 02a3260 将commit节点合入到新的分支
git cherry-pick node-id
- 如果没有git commit:先git stash暂存更改,然后git checkout B ,在git stash apply将暂存的内容merge到分支B
- git分支重命名
# 本地分支重命名
git branch -m oldName newName
# 将重命名后的分支推送到远程
git push origin newName
# 删除远程的旧分支
git push --delete origin oldName
-
git clone 重命名文件夹
git clone git@xxx.xxx:yy.y.git myDirName
-
删除本地分支、拉取分支在远端的最新节点
- 适用于想丢掉本地分支上的所有修改,同步至远端同一分支的最新节点情况
git fetch origin xxx
git reset --hard origin/xxx