git init 创建库
1.git add 工作区--暂存区
例:git add a.txt / git add . (将所有工作区文件添加到暂存区)
2.git commit 暂存区--版本库
例:git commit a.txt -m "提交说明" / git commit -am ""(将所有暂存区文件提交到版本库)
3.git reset --mixed 版本库--暂存区
例:git reset --mixed d5d43ff(git reset --mixed 版本号,是指把该版本号提交的内容从版本区位置回滚到暂存区。)
4.4 暂存区 => 工作区 —— git reset --soft
git reset命令--soft跟着版本号,是指把该版本号提交的内容从暂存区位置回滚到工作区。
git reset --soft 版本
4.5 版本区 => 暂存区 => 工作区 —— git reset --hard
git reset命令--hard跟着版本号,是指把该版本号提交的内容从版本区位置回滚到工作区。
git reset --hard 版本号
4.6 git checkout +文件名 / . 工作区文件的还原
1.git clone 工程克隆
2.git status 查看状态
3.git diff 查看修改内容
git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。
git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff --cached
-
显示暂存区和工作区的差异:
$ git diff [file]
显示暂存区和上一次提交(commit)的差异:
$ git diff --cached [file]
git branch(列出分支),git branch 分支名/git checkout -b 分支名(新建分支),git branch -d 分支名(删除分支),git checkout 分支名(切换分支)
git pull 命令
git pull 命令用于从远程获取代码并合并本地的版本。
git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写。
命令格式如下:
git pull <远程主机名> <远程分支名>:<本地分支名>
将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
如果远程分支是与当前分支名相同,则冒号后面的部分可以省略。
git pull origin master
git fetch 命令:
$ git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地
- 1
如果只想取回特定分支的更新,可以指定分支名:
$ git fetch <远程主机名> <分支名> //注意之间有空格
- 1
最常见的命令如取回origin 主机的master 分支:
$ git fetch origin master
- 1
取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:
$ git log -p FETCH_HEAD
git merge
虽然目标分支的提交历史相对于当前分支是线性的,可以进行快进合并,但你仍然希望有一个合并commit来标志合并在此commit发生过,那么可以在执行git merge命令时使用--no-ff选项。
git merge --no-ff <branch>
果将要合并的两个分支都修改了同一个而文件的同一个部分内容,Git就无法确定应该使用哪个版本的内容。当这种情况发生时,合并过程会停止在合并commit提交之前,以便给用户留下机会手动修复这些冲突。
在Git的合并过程中,很棒的一点是它使用人们熟知的 编辑 / 暂存 / 提交 这样的工作流程来解决冲突。当碰到合并冲突时,执行git status命令会列出哪些文件含有冲突并需要手动解决。比如说当两个分支都修改了hello.py文件的同一部分,你会看到类似下面这样的信息:
On branch main
Unmerged paths:
(use "git add/rm ..." as appropriate to mark resolution)
both modified: hello.py
冲突是如何显示的
当Git在合并过程中碰到了冲突,它会编辑受影响的文件中的相关内容,并添加视觉标记用以展示冲突中双方在此部分的不同内容。这些视觉标记为:<<<<<<<,=======,>>>>>>>。要找到冲突发生的具体位置,在文件中搜索这些视觉标记会非常便捷地达成目的。
here is some content not affected by the conflict
<<<<<<< main
this is conflicted text from main
=======
this is conflicted text from feature branch
>>>>>>> feature branch;
通常来说在 ====== 标记之前的内容来自于接收合并的分支,而在这之后的内容来自于要合并的分支。
一旦找到冲突的部分,就可以根据需要来修正冲突。当你完成了冲突的修复并准备好继续进行合并,只需要执行git add命令把已经解决好冲突的文件添加暂存区,告诉Git这些冲突已经解决完毕即可。这之后就像正常提交代码一样执行git commit完成合并commit。这个过程跟正常情况下提交代码是完全一样的,也就是说对于普通开发者来说处理冲突也是小菜一碟。
较修改之间的差异
git diff不加参数即默认比较工作区与暂存区
git diff --cached [<path>...]比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
git diff HEAD [<path>...]比较工作区与最新本地版本库。如果HEAD指向的是master分支,那么HEAD还可以换成master
git diff commit-id [<path>...]比较工作区与指定commit-id的差异
git diff --cached [<commit-id>] [<path>...]比较暂存区与指定commit-id的差异
git diff [<commit-id>] [<commit-id>]比较两个commit-id之间的差异
例如,比较工作区和暂存区的main.cpp文件的差异。
$ git diff main.cpp
diff --git a/main.cpp b/main.cpp
index 57a5778..24604db 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,6 +1,7 @@
#include <iostream>
using namespace std;
int main(){
- cout<<"Hello, World!"<<flush;
+ int a, b;
+ cout<<"Hello, World!"<<endl;
return 0;
}
\ No newline at end of file
————————————————
版权声明:本文为CSDN博主「ezhchai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ezhchai/article/details/79387452
本文详细介绍了Git的基本操作,包括gitinit创建库,gitadd和gitcommit的使用来管理文件,gitreset的三种模式在版本库、暂存区和工作区之间的操作,以及gitclone、gitstatus、gitdiff查看文件差异。此外,还讲解了gitbranch的分支管理,gitpull和gitfetch的远程仓库交互,以及gitmerge时如何处理合并冲突。最后,提到了gitdiff在不同阶段比较文件的用法。
1995

被折叠的 条评论
为什么被折叠?



