Wray Lee
Articles35
Tags0
Categories0

Archive

Git教程

Git教程

Git教程

git像一个可排序的栈,栈顶在最底端,只能对最近的提交进行更改,如果要更改之前的数据就需要排序

所有操作除了switch,checkout都是在引用当前所在位置进行

提交记录本身的名字为hash值

commit

git commit创建一个新的版本(不是完全copy,只会记录不同)

git commit --amend对提交记录进行修改

branch

  • git branch <branch_name> <branch_position>

​ branch指向一个commit

  • git branch -f main head~3 git branch -f main c0 git branch -f 可以变更分支指向

  • git switch <branch_name>

​ 切换到某一分支

使用分支移动分支也会跟随者移动

merge/rebase

merge

拉取合并

git merge 1

此时branch在main则拉取1的代码到main,branch仍在main

rebase

合并到,并复制提交记录

git rebase 1

则把main合并到1的开发路线上,branch在main

rebase不会移动下层的版本,只会移动引用当前所在的版本


git rebase -i head~3 选中包含head引用位置3个commit,通过gui进行删减,排序,处理后的结果会出现在一条新的路线上(基为head~3)

-i变动当前版本到基版本的所有版本

git rebase -参数 基版本

即为当前引用所在位置

git checkout 1

将head指向1

head指向一次提交记录commit

head作为引用使用要大写HEAD

checkout

git checkout -b totallyNotMain o/main

git checkout -b 选择分支 追踪分支(会创建分支,不需要提前创建好)

可以使某一分支追踪远程某一分支,相当于替换了main


也可以使用

git branch -u 追踪分支 选择分支(不会创建分支,需要提前创建)

相对引用

^向上移动一个提交记录

~num 向上移动num个移动记录

git checkout main^

==可以使用分支代表提交记录commit==

^2可以选择第二个父提交

指令支持链式操作

git checkout HEAD~^2~2

撤销变更

git reset git revert

git reset head^是commit退回到前一个记录,删除当前记录,引用变更到前一个记录

git revert head^在此路线上添加一个新的commit,但是新的commit实际上和前一个相同

==两条命令都是对当前引用所在位置进行操作==

整理分支

git cherry-pick c2 c4 将c2,c4按顺序复制到引用当前所在分支下

Tag(避免分支移动造成混乱)

git tag v1 c1

在c1上添加v1 tag

describe

git describe <引用>

output:__g



远程

clone

git clone复制远程仓库

首次clone会自动将main和o/main引用到同一位置

main和o/main

checkout o/main 再进行commit时,由于未下载远程仓库数据,会造成HEAD分离,即o/main只有同步时才会发生指向变化

远程分支o/main(o/*)实际上是远程main分支的位置

fetch

git fetch

不会更新main分支,只是将远程仓库代码下载,更新了o/main引用

不需要参数,会自动比对下载

git fetch origin <远程选定分支:本地选定分支>(可以使用相对引用)

git fetch origin <:本地分支>会创建本地分支

pull

就是fetch+merge

git pull

实际上就是git fetch ; git merge o/main

会拉取代码自动合并

是在当前分支下进行拉取,所以o/main不在当前位置会因不同步而无法拉取

git pull --rebase以变基形式拉取代码合并main分支,利用此特性可以实现整条分支的变基

可以使用类似fetch的git pull <远程分支:本地分支> git pull <:本地分支>

push

与pull相反,会上传代码,无自动合并,如果本地仓库旧版需要更新后再push

git push origin <选定分支>

​ 将HEAD定位到头部,自动追踪选定分支上传

git push origin <本地选定分支:远程选定分支>

将本地选定分支上传到远程选定分支,若远程不存在则会创建

可以使用相对引用不上传整条分支git push origin <本地选定分支^:远程选定分支>

​ 只会上传到本地选定的上方

git push <:远程分支>

​ 会删除远程分支

Author:Wray Lee
Link:http://blog.wray7.top/2023/09/04/Code/Git%E6%95%99%E7%A8%8B/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可