0. 前言
- 官网相关资料
- 其他资料:
1. 总体介绍
- 在使用Git时,常用的分区有:
- 工作区(Workspace):用户直接操作的的文件。
- 暂存区(Index / Stage):在
./.git/index/
路径中,包含add/rm后、commit前暂存的数据。 - 本地仓库(Repository):在
./.git/
路径中,包含之前版本的信息。 - 远程仓库(Remote):
- 盗用《阮一峰 - 常用 Git 命令清单》中的图。
2. 常用命令
2.1. 基本操作
- 新建本地仓库:在新建好的文件夹目录下运行
git init
- 克隆仓库:
git clone xxx
- 查看当前状态:
git status
2.2. 工作区、暂存区、本地仓库
- 从工作区到暂存区:add/rm/mv 命令
git add [file1] [file2] ...
git add [dir]
git add .
git rm [file1] [file2] ...
git mv [file-original] [file-renamed]
- 从暂存区到工作区:
git reset HEAD <filename>
- 暂存区中将撤销对应修改,工作区中有等待提交的内容。
- 工作区中,若对应文件没有任何修改,则会将暂存区中的修改更新到工作区中。
- 工作区中,若对应恩建有修改,则不会将暂存区中的修改更新到工作区中。
- 总的来说,一般会导致工作区中有等待提交的修改。
git checkout -- <filename>
- 这种方法是将暂存区或本地仓库中的内容更新到工作区中,也就是撤销工作区中的更新。
- 若暂存区中有等待commit的内容,则会将本地工作区中的内容改变为暂存区中的内容。
- 若暂存区中没有数据,则会将本地工作区中内容改变为最新commit的内容。
- 总的来说,一般会导致工作区中没有需要提交的内容。
- 从暂存区到本地仓库:commit 命令
git commit -m [message]
git commit [file1] [file2] ... -m [message]
- 从本地仓库到暂存区
git reset --soft xxx
- 注意,该命令是撤销 commit,但保留该commit中修改的暂存区信息。
- 从本地仓库到工作区:
- 与
从暂存区到工作区
中相同的git checkout -- <filename>
。 git reset --hard HEAD^
:- 该命令可以在改变本地仓库的同时,改变工作区内容。
- 将工作区内容改变为指定版本的本地仓库内容。
- 工作区中没有需要提交的内容。
- 与
2.3. 本地仓库与远程仓库
- 从本地仓库到远程仓库:push 命令。
- 从远程仓库到本地仓库:clone/fetch 命令。
- pull命令既把远程仓库的内容更新到本地仓库中,又把远程仓库的内容更新到工作区中。
2.4 分支
- 分支基本操作:
- 查看本地分支:
git branch
- 新建本地分支:
git branch new_branch_name
- 选择本地分支:
git checkout new_branch_name
- 新建分支并选择:
git checkout -b new_branch_name
- 等价于两条命令:
git branch new_branch_name
,git checkout new_branch_name
- 查看本地与远程分支:
git branch -a
- 删除本地分支:
git branch -d new_branch_name
- 查看本地分支:
- 简单合并:
- 在branch1执行命令
git merge branch2
,意思是在branch1的基础上,合并branch2。 - 如下图(盗用这里的图),如果branch1是下图中的master,branch2是下图中的dev,则可以直接合并。
- 在branch1执行命令
- 冲突处理:
- 如下图(盗用这里的图),如果在master中执行
git merge feature1
,则会提示文件存在冲突,需要手动处理。 - 手动处理后,需要重新add文件并commit。
- 举一个例子说明冲突文件的形式:
=======
前是master分支,后面是feature1分支。- 在VSC中也可以轻松处理。
1
2
3
4
5
6
7<<<<<<< HEAD
first line line
second line
=======
first line
second line line
>>>>>>> feature1
- 如下图(盗用这里的图),如果在master中执行
2.5. 堆栈
- 作用:当突然有事情,需要临时保存工作区和暂存区的数据保存。
- 常用命令:
git stash
:将工作区和暂存区的数据保存到堆栈中。git stash pop
:将堆栈中的数据恢复到工作区中。git stash list
:堆栈清单。
3. 碰到的一些实际情况
3.1. folk后更新最新代码
- 方法一 - Github中鼠标操作
- 点击folk库中的 new pull request。
- 左边改为folk的结果,右边改为原始github repo,然后点击 create pull request。
- 最后 create pull request 即可。
- 点击folk库中的 new pull request。
- 方法二 - 命令:
git remote add upstream <original repo url>
git fetch upstream
git merge upstream/master
git push origin master