【Git】常用命令

Git命令游戏教程网站:https://learngitbranching.js.org/?locale=zh_CN


日常使用


命令

  • git push

1.不省略的写法

适合<本地分支名><远程分支名>不一样的情况

将本地的dev分支上的代码推送到远程主机名为origintest的分支上。如果远程的test分支不存在,则会被创建

git push origin dev:test

2.省略:<远程分支名>

本地分支名和远程分支名一样的情况

git push origin dev
  • 查看git分支的编号
git log --oneline

  • 切换分支
git checkout [branch]

注意:在切换分支之前,当前分区工作目录的文件一定要提交到git仓库中,保持当前分支工作区完全干净。

  • 新建一个分支,并切换到该分支
git checkout -b [branch]
  • 新建一个分支,HEAD指向远程仓库的指定分支,并切换到该分支
git checkout -b [新分支] origin/[远程分支名]
  • 从当前分支下的某个指定commit新建分支
git checkout -b [新分支] [commit-id]

例子:当前分支的git log

分支1

分支2

分支3

现在希望从分支2新拉一个分支,命令为git checkout -b new-branch 分支2的commit-id

  • 重命名分支

(已经切换到要重命名的分支)

git branch -m new_name

(在其他分支)

git branch -m old_name new_name
  • 合并分支merge

要使main主分支包含所有修改的代码:要把bugFix分支(c2位置)合并到main主分支(原本在c3位置),必须先切换到main分支,然后输入git merge bugFix

现在的main(c4位置)有两个父节点,它包含对代码库的所有修改。


  • 合并分支 rebase

(Rebase 实际上就是取出一系列提交记录,“复制”它们,然后在另外一个地方逐个的放下去。rebase较于merge的优势是可以创造更线性的提交历史。)

1)要使main主分支包含所有修改的代码:要把bugFix分支(原本c3位置)合并到main主分支(c2位置),先切换到bugFix分支,然后输入git rebase main

但main尚未更新。

这里的 c3' 是我们 Rebase 到 main 分支上的 c3 的副本。

2)切换到main上,git rebase bugFix。现在main包含对代码库的所有修改。

这里由于bugFix继承自main,所以git只是把main分支的引用往前移动了一下而已。

[整理提交记录]

  • cherry-pick,把一些提交复制到当前位置(HEAD)下面

输入命令git cherry-pick c3 c4 c7

cherry-pick和rebase不同,它可以只将我们指定的部分提交记录放到当前分支下。


  • fetch

同步远程服务器上的数据到本地:git fetch origin


git pull 的操作结果= git fetch + git merge (但工作原理不同)。

git fetch将远程仓库的代码下载过来,同一块代码远程和本地不同 需要经过确认后merge为一个新的代码版本;

git pull 基于本地代码,不经过确认,直接将远程代码合并到本地。


  • 如果当前分支修改的文件没有提交到git仓库,直接checkout 其他分支/master分支,会发生什么情况
posted @ 2023-05-30 15:08  musecho  阅读(14)  评论(0编辑  收藏  举报