git的基础指令

git基础指令

1. 提交

git commit

2. 新建并切换分支

git checkout -b [branch name]

or

git branch [branch name]
git checkout [branch name]

3. 合并分支

如何把a分支合并到b分支下面,先切换到b分支

git checkout [branch b]

然后把a分支合并过来

git merge [branch a]

4. rebase合并分支

切换到bugFix分支,rebase到master下面,rebase和merge不同点在于rebase会把另一个分支的提交记录也复制过来

git checkout bugFix
git rebase master

5. 移动相对引用标签HEAD

向上移动一个提交

git checkout HEAD^

向上移动3个提交

git checkout HEAD~3

将 master 分支强制指向 HEAD 的第 3 级父提交

git branch -f master HEAD~3

6. 重置本地分支

reset, 切换到本地分支,目的是使HEAD指向本地分支

git checkout [本地分支]
git reset HEAD^
HEAD^为重置一个提交,HEAD^^为2个,类推, HEAD~4为4个提交

7. 重置远程分支

revert

git checkout [远程分支]
git revert HEAD

注意这里的HEAD和reset上面的并不一样,这里的HEAD没有尖括号

8. 复制别的分支的提交记录到当前分支

cherry-pick

git checkout [branch name]
git  cherry-pick [提交记录hash值1] [ 提交记录hash值2] ...

9.rebase的交互式界面

用于调整每个提交的顺序

git rebase -i HEAD~4

此命令会弹出最近4次的提交记录,并且通过拖拽可以调整顺序

10.复制最近一次提交出来并新建一个分支

git commit --amend

11. 跟某个提交打标签

git tag [tag name] [submit hash value]

12. 拉取远程代码

git pull

或者

git fetch
git merge [新拉下来的分支]

13.提交代码

git push

14. 本地落后于远程的拉取代码

git pull --rebase
git push

git pull 和 git pull --rebase区别

git pull是把远程新的提交拉下来,然后和本地新的提交合并,产生一个新的本地提交
git pull

git pull --rebase 把远程新提交拉下来后,排到本地新提交前面,和原来未提交状态一致
git pull rebase
在开发社区里,有许多关于 merge 与 rebase 的讨论。以下是关于 rebase 的优缺点:

优点:

Rebase 使你的提交树变得很干净, 所有的提交都在一条线上
缺点:

Rebase 修改了提交树的历史
比如, 提交 C1 可以被 rebase 到 C3 之后。这看起来 C1 中的工作是在 C3 之后进行的,但实际上是在 C3 之前。

一些开发人员喜欢保留提交历史,因此更偏爱 merge。而其他人(比如我自己)可能更喜欢干净的提交树,于是偏爱 rebase。仁者见仁,智者见智。 😄

15. 新建一个分支并且直接设置追踪远程某一个分支

以下是, 首先更新了远程分支,然后,新建了totallyNotMain分支并追踪远程的o/main分支

git remote update origin -p
git checkout -b totallyNotMain o/main

16.直接设置某个分支去追踪远程分支

以下是设置foo分支去追踪远程的o/main分支,当已经checkout到foo下面时候,foo是可以省略

git branch -u o/main foo

17. 推送高级设置

在不检出本地分支的情况下,直接push远程仓库,下面命令会在远程origin仓库中找到mian分支,并提交上去

git push [origin远程仓库名] [本地仓库名]
git push origin main

下面代码直接指定远程分支,把foo分支推送到远程的main分支上面,如果面分支是不存在,会自动创建

git  push origin foo:main

PS: 防止这个push这个命令误删远程分支,下面的这个命令会删除远程的foo分支

git push origin :foo

18. 高级拉取

Git 会到远程仓库的 foo 分支上,然后获取所有本地不存在的提交,放到本地的 o/foo 上。

git fetch origin foo

指定目标
下面实现了从远程main分支拉取然后同步到本地的foo分支上面,注意冒前参数和push相反

git fetch origin main:foo

下面这个命令可以在本地建一个新的foo分支

git  fetch orgin :foo

从bar分支拉取并应用到foo上

git pull origin bar:foo

19. 撤回提交

撤回本地提交但是不删除改动

git reset --soft HEAD^

撤回本地提交,并删除提交的改动

git reset --hard HEAD^

20. stash在不提交的情况下切换分支

如果分支中有文件已经修改,但是又不想提交的情况下切换分支,那么需要用到stash

git stash
git checkout [branch name]
...
git stash list
git stash apply [stash number]

21. 最强的复位方法

抛弃我所有的分阶段和未分阶段的更改,忘记我当前的本地分支上的一切,使它与origin / master完全相同

git reset --hard origin/master

22. 列出已有的标签

git tag

23. 打一个标签

 git tag "release/2.2"

24. 标签同步到云端

git push origin --tags

25. 删除一个标签

git tag -d "release/2.2"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值