前言
最近,有朋友私信让我就git 使用
做篇文章分享,分享一下我在日常工作中是如何使用git
的。我当场就收费两包辣条,最后讨价还价,朋友用1.5包辣条骗到了这篇文章,等他欣喜的走了我打算直接分享出来,气死这个吝啬鬼,当然最终还是希望本文对你有所帮助。
基础概念
首先我们简单的概述一下git
,git
有三个分区,分别是:
-
工作区(Working Directory):开发者直接编辑的地方,只要文件发生了更改,在这就会显示出来,包含追踪与未追踪文件。通过
git add
将工作区文件添加到暂存区。 -
暂存区(Stage | Index):数据暂时存放的区域,通过
git commit
将暂存区文件添加到本地版本库。 -
本地版本库(Local Commit History):存放所有已经提交的数据,通过
git push
推送到远程仓库。
基础命令
git status
查看工作区状态,如果跟踪的文件有做任何修改,都可以通过该命令来发现。 如:这里通过git status
就发现在develop
分支上,README.md
文件发生了更改。
jere@JereMBP GitTest (develop) $ git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
git diff
查看具体修改内容,比如在上一步中,我们通过git status
发现README.md
文件发现了更改,这时我们可以通过git diff <file>
来查看具体的修改内容:
jere@JereMBP GitTest (develop) $ git diff README.md
diff --git a/README.md b/README.md
index 7eb4917..3d6d2a4 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,5 @@
# GitTest
For git command practice
+
+do something on develop branch
+
jere@JereMBP GitTest (develop) $
另外,你也可以直接使用git diff
,这样就会显示所有文件的所有修改内容。
git checkout
切换分支,比如我在feature-1
分支上切换到develop
分支上:
jere@JereMBP GitTest (feature-1) $ git checkout develop
Switched to branch 'develop'
jere@JereMBP GitTest (develop) $
在当前分支节点上新建
一个分支并且切换过去
,比如我在 main
分支上创建一个develop
新分支并且切换过去:
jere@JereMBP GitTest (main) $ git checkout -b develop
Switched to a new branch 'develop'
jere@JereMBP GitTest (develop) $ git branch
* develop
main
放弃工作区所作的修改,类似git restore <file>...
,比如:我现在想放弃README.md
中的修改
jere@JereMBP GitTest (develop) $ git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
modified: dev-file.txt
no changes added to commit (use "git add" and/or "git commit -a")
jere@JereMBP GitTest (develop) $ git checkout README.md
Updated 1 path from the index
jere@JereMBP GitTest (develop) $ git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: dev-file.txt
no changes added to commit (use "git add" and/or "git commit -a")
jere@JereMBP GitTest (develop) $
另外,如果你想放弃所有工作区中的修改,可以使用git checkout .
来放弃所有修改。
git branch
查看本地
分支情况:
jere@JereMBP GitTest (main) $ git branch
* main
查看远程仓库
分支情况:
jere@JereMBP GitTest (develop) $ git branch --remote
origin/HEAD -> origin/main
origin/main
在当前节点上创建一个新分支
,比如我在 develop
上创建一个feature-1
新分支:
jere@JereMBP GitTest (develop) $ git branch feature-1
jere@JereMBP GitTest (develop) $ git branch
* develop
feature-1
main
另外,关于创建分支还有一些常用的操作可以了解一下,比如:
# 基于某个分支上开出新分支
$ git branch <new-branch> <base-branch>
# 基于某个提交开出新分支
$ git branch <new-branch> commit_hash
# 基于某个tag开出有新分支
$ git branch <new-branch> v1.1
删除分支
- 删除本地分支:
git branch -d <branch-name>
。 - 删除远程分支:
git push -d origin <branch-name>
。
git add
将工作区所作的修改添加到暂存区,如将README.md
文件添加到暂存区:
jere@JereMBP GitTest (develop) $ git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed