xzhuz / blog-gitment

博客备份和comment记录
https://meisen.pro
0 stars 0 forks source link

Git的一些用法 #23

Open xzhuz opened 5 years ago

xzhuz commented 5 years ago

https://www.meisen.pro/article/bcd3edec07234b27af5d9f501d2a2431

git cherry-pick

cherry-pick的意思是将不同分支上面的提交合并到当前分支上来。比如目前你在并行开发多个分支,你在一个分支上修复了一个bug,这是你发现其他所有的的分支都有这个bug。这个时候,你就可以使用cherry-pick指令将这个commit合并到其他分支而不会搞乱其他的文件或是提交。

让我们想象一个可以使用该命令的场景。我有两个分支,并且我想要把b20fd14: Cleaned junk这次提交使用cherry-pick的方法放入到另一个分支。

我切换到我想要放入该提交的分支,然后运行如下命令:

git cherry-pick b20fd14

## 多个commit使用cherry-pick

git cherry-pick b20fd14..b20fd15

git fsck 检查都是的提交

fsck -- file system check

git fsck --lost-found

这里你可以看到丢失的提交,你可以使用git show [commit_hash]来查看这些提交所包含的改动或者是使用git merge [commit_hash]来恢复它。

git fsck比reglog有一个优势。比如你删除了一个远端分支并且克隆了仓库,使用fsck命令你可以搜索并恢复该远端分支。

git stash

保存尚未提交的改动

git stash

查看暂存列表

git stash lish

恢复改动

git stash apply

恢复指定暂存

git stash apply stash@{2}

恢复改动并删除当前暂存

git stash pop

git reflog

比方说,你提交了一个你不想要提交的代码,最后你通过使用硬重置(hard reset)使其回到了之前的状态。稍后,你意识到,在这个过程中你丢失了一些其他的信息,并想要退回或是至少能看一眼。git reflog命令可以帮你做到这一点。

一个简单的git log命令,显示你最近的提交信息,以及上一次,再上一次的提交信息,以此类推。

而git reflog显示的是所有head移动的信息。记住,它是在本地的,而不是你仓库的一部分,不会包含在推送(push)和合并中(merge)。

git blame

查看谁改动我的代码

git blame [file_name]

git add -p

暂存一个文件的部分改动

你对一个文件进行了多次修改并且想把他们分别提交。这种情况下,你可以在添加命令(add)中加上-p选项

git add -p [file_name]

输入y来缓存该块 输入n不缓存该块 输入e来人工编辑该块 输入d来退出或进入下一个文件 输入s来分割这个块

转载请说明出处

xzhuz commented 5 years ago

更新远程分支

git branch -m old_branch new_branch # Rename branch locally
git push origin :old_branch # Delete the old branch
git push --set-upstream origin new_branch 或者git push -u origin new_branch # Push the new branch, set local branch to track the new remote