Git常用基础
branch
- 查看所有分支:
git branch -a
- 切换到分支:
git checkout develop
- 创建分支并切换到:
git checkout -b develop
- 创建一个新分支:
git checkout --orphan new_branch
--orphan
选项用于创建一个没有历史记录的分支
- 删除分支:
git branch -d develop
,注意只是删除本地分支,并不影响远程分支。 - 删除仓库内文件
git rm test.py
- 将工作目录中的变更(修改、新增、删除等)添加到暂存区(Staging Area)的命令:
git add
- 提交更新:
git commited -m '本次更新的情况说明'
add
git add a.py
git add .
执行add后,还没执行commit时,想要撤销这次add,该怎么办?
git reset HEAD file
, 撤销单个文件
git reset HEAD
,撤销多个文件
reset
commit
git commit -m "本次提交说明"
stash
git stash
git stash pop
tag
引用别人的一句话,
tag
的本质就为某一次commit
起一个名字,以后通过tag
的名字,直接找到这次commit
之后的版本。
- 查看本地所有tag版本:
git tag
- 创建新的tag标签:
git tag -a v2.1 5e39ad35a98 -m "对于当前tag的描述"
- 不加描述创建tag标签:
git tag v2.1 5e39ad35a98
- 直接以最新一次commit版本创建tag:
git tag v2.4
- 显示某个tag的详细信息:
git show v2.4
- 删除某个tag标签:
git tag -d v2.4
- 将本地所有标签提交到远程仓库:
git push origin --tags
新学的知识
- 通过
git rm
删除的文件同样需要被add
、commit
后才会生效
Q&A
-
Q:本地刚拉取了远程仓库的最新状态,如何本地文件合并的痕迹?
A:git log --graph --oneline --all
-
我是想看某个文件合并前后的差异?
例如,如果合并前的 commit 是 abc123,合并后的 commit 是 def456,你可以执行:
git diff abc123 def456 path/to/your/file.txt
这里特别说明一下,git pull origin develop
执行之后会自动执行commit,此时可以通过git log
查看pull之后commit的SHA。 -
Q:如何创建一个新的分支,不依赖于其他分支的历史提交,这个分支的用途是从远程重新拉去最新的分支,重新进行开发
A: 操作如下git checkout --orphan auto_run git status git rm -r ./ git commit -m init_commit git status git rm ./ -r git status git commit -m init_branch git pull brli develop --allow-unrelated-histories # git pull brli develop (会出错) ```
-
Q: 每次
git clone
仓库都会克隆所有的分支,下载很慢,能不能只clone我想要的那个分支?
A:‘git clone -b <分支名> --single-branch <repository_url> ’ -
Q: 基于本地分支develop 创建一个master 分支,并想将所有的内容同步到远程的master 分支上,使用背景是本地仓库同步到远程新建的仓库:
A: 假设当前在develop分支上git checkout --orphan master git fetch origin master git pull origin master (如过远程master 与本地master 有冲突文件的话,可以先将本地的存为别名,再执行) (如果上一步中的同名文件还有用的话可以拷贝至从master 上拉下来的同名文件中,然后删除本地这个存别名的文件文件) git add . git commit -m 同步本地master到reposity
-
A:
git fetch
的作用是什么? 回答来自文心一言
Q:git fetch origin master
是一个 Git 命令,用于从远程仓库(在这个例子中是名为origin
的远程仓库)获取master
分支的最新更改,但并不将这些更改合并到你的当前分支。具体来说,这个命令做了以下几件事:
a. 与远程仓库通信:Git 会与名为origin
的远程仓库建立连接。
b. 获取数据:Git 会从origin
仓库的master
分支获取最新的提交(commit)和对象(如 blob、tree 等)。
c. 更新本地引用:这些新获取的数据会被存储在本地仓库中,并且本地的origin/master
引用(或称为“远程跟踪分支”)会被更新以指向origin
仓库中master
分支的最新提交。注意几点:
fetch
命令不会改变你当前所在的分支或该分支上的任何内容。它只是获取数据并更新你的本地引用。- 与
pull
命令不同,fetch
命令不会自动合并更改。如果你想要合并这些更改,你需要执行额外的命令,如git merge origin/master
或git rebase origin/master
。 - 如果你想要获取远程仓库上所有分支的最新更改,而不是仅仅
master
分支,你可以使用git fetch origin
(不带分支名)。
这个命令在想要检查远程分支的最新状态但又不想立即合并这些更改到当前分支时非常有用。