git备忘录

网上的一个图:

1. git fetch

将远程库的代码在本地仓库中更新,注意:本地工作空间并不会有变化,仅仅是origin(默认)主机对应的远程库在本地更新 一般是后面接 主机名 或者 主机名 分支名,例如 `git fetch origin` 或者`git fetch origin master`

  • git pull 相当于是 git fetch+git merge
  • git pull --rebase 相当于是 git fetch + git rebase

2. git merge 和 git rebase的差别。

简单对比git pull和git pull --rebase的使用 - 散尽浮华 - 博客园 帮助参考

  • git merge --no-ff -m "merge with no-ff" dev  普通合并模式,会创建一个新的commit id。

3. git仓库迁移,两个仓库之间的数据转移,保留log

git clone xxxxxx -b master #xxxxxx为仓库1
git remote add log yyyyyyyy #yyyyyyyy为仓库2
git fetch log 
git checkout -b log log/master 
git checkout master 
git rebase log 
git push origin master

4.git branch --set-upstream-to <branch-name> origin/<branch-name>

git pull失败 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令`git branch --set-upstream-to <branch-name> origin/<branch-name>`。


5. git reset --hard HEAD^

回退到上一个版本,本地工作空间会变化 或者

  • git reset --hard 1094a 回退到某个指定的commit节点

6. git reflog

记录每一次git命令


7. git diff HEAD <file>

可以查看工作区和版本库里面最新版本的区别,在git add 之后还可以查看文件做了什么修改


8. git checkout -- filename

命令`git checkout -- readme.txt`意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况: 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。 总之,就是让这个文件回到最近一次git commit或git add时的状态。


9. git reset HEAD <file>

可以把暂存区的修改撤销掉(unstage),重新放回工作区


10. git log --graph

可以看到分支合并图


11. git stash

可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作 `git stash list` 查看stash列表 `git stash apply` 恢复内容,不过恢复后,stash内容并不删除,你需要用git stash drop来删除 `git stash pop` 恢复的同时把stash内容也删了


12. git checkout -b dev origin/dev 

创建远程origin的dev分支到本地(本地创建dev分支,内容同origin/dev )


13. git rev-parse --short HEAD ,git rev-parse HEAD

git rev-parse --short HEAD  获取最近一次提交的commit id (短id)

git rev-parse HEAD 获取最近一次提交的commit id (长id)


14. git branch --contains <commmit_id>

通过某次commit id获取到对应的分支


15.git blame filename

查看文件每一行最后一次提交的commitid


16.git submodule foreach <command> 

对submodule中每个子repo进行command操作,例如:git submodule foreach git reset tag_v0.1 --hard


17.git clean 

从工作目录中删除所有没有tracked过的文件

git clean -fd 删除没有被tracked的文件和文件夹


18. git clone --recursive 

递归克隆,递归克隆项目下面的所有git项目,(对于submodule可以适用)


19. git log --pretty=oneline b5fb9ec462680f9a39e87a06fcaa4c7eac590c94...2b187870a162a8c4b700e3eb90f7cfb401ad5c6f

获取两个commit之间的commit信息


20. 从其他分支merge指定文件到当前分支

git checkout branch -- filename

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值