git 命令复习
2021-07-11 本文已影响0人
再见地平线_e930
一段时间没碰 git 了,这里复习并记录一下~~~
区域:工作区 = (add) => 暂存区 =(commt)=> 分支
假设有如下 readme.txt 文件:

我的最近一个操作是在文件最后一行添加了:my boss is stupid,并且通过 git add
命令添加到了暂存区,可以通过以下命令撤销修改,恢复文件
1.1 通过 git restore --staged readme.txt
命令,将 readme.txt 文件从 暂存区
撤回到 工作区
1.2 执行git status
命令可以看见 readme.txt 文件以及从 暂存区
移动到了 工作区

1.3 通过 cat readme.txt
命令查看现在的 readme.txt 文件

2.1 通过 git restore readme.txt
命令撤回 readme.txt 文件在 工作区
的修改
2.2 通过 cat readme.txt
命令查看现在的 readme.txt 文件

3.1 关联远程仓库,先在 gitee 上创建一个 learngit 仓库,并通过 git remote add origin https://gitee.com/cquptzsn/learngit.git
命令把本地仓库和远程仓库建立连接
3.2 第一次推送时,使用 git push -u origin master
命令把本地库的所有暂存区内容推送到远程仓库,我们第一次推送master分支时,加上了 -u
参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

3.3 注意,第一次推送时可能会收到警告
3.4 我们从零开发,那么最好的方式是先创建远程库,然后从远程库克隆 git clone <仓库地址>
,一般使用 ssh
方式克隆
分支管理
4.1 使用 git checkout -b dev
创建并切换到 dev 分支,它相当于 git branch dev
和 git checkout dev
两条命令的操作
4.2 用 git branch
命令查看当前分支,当前处于 dev 分支

4.3 在 readme.txt 文件中添加了一行,并提交
create a new branch dev

4.4 我们通过 git checkout master
命令切换回 master
分支,再查看 readme.txt 文件,会发现刚才添加的内容不见了,原因是因为我们并没有把 dev
分支合并到 master
分支
ZSN@LAPTOP-2QSP1FGD MINGW64 /e/web/git-practice/learngit (master)
$ cat readme.txt
Git is a version control system------!!!!!.
Git is free software------!!!!!.
hello world
ha ha ha
4.5 通过 git merge dev
命令把 dev
分支合并到 master
分支,注意:git merge
命令用于合并指定分支(devgit)到当前分支(master)
ZSN@LAPTOP-2QSP1FGD MINGW64 /e/web/git-practice/learngit (master)
$ git merge dev
Updating 6270e2e..12e806a
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
4.6 分支合并完后我们可以删除 dev
分支
PTOP-2QSP1FGD MINGW64 /e/web/git-practice/learngit (master)
$ git branch -d dev
Deleted branch dev (was 12e806a).
4.7 删除后,查看分支git branch
,发现只剩 master
分支了,查看readme.txt文件,发现已更改
ZSN@LAPTOP-2QSP1FGD MINGW64 /e/web/git-practice/learngit (master)
$ git branch
* master
ZSN@LAPTOP-2QSP1FGD MINGW64 /e/web/git-practice/learngit (master)
$ cat readme.txt
Git is a version control system------!!!!!.
Git is free software------!!!!!.
hello world
ha ha ha
create a new branch dev
4.8 在新版 git 中也可以使用git switch -c dev
命令创建并切换到 dev
分支,切换到也有的 master
分支可以使用git switch master
命令
4.9 上面的操作,并没有和远程分支结合起来。如果我们已经在远程建立了一个分支(假设该分支名字叫 todo
),如果我们要在该分支上开发,则需要使用git fetch
查看所有远程分支,再使用 git checkout todo
在本地新建一个同名分支,并与远程分支关联。之后就可以在该分支上开发了。
解决冲突
5.1 冲突原因示例:如果不同的两个人,分别从 dev
分支上拉取了 feature1
分支和feture2
分支,并且分别在这两个分支上进行开发。如果他们都更改了同一个文件如 readme.txt:
在 feature1
上的 readme.txt:
Git is a version control system------!!!!!.
Git is free software------!!!!!.
hello world
ha ha h
brancha 666
先在远程新建 go 分支,然后本地在该分支上开发
我新建了一个分支feature1
在 feature2
上的 readme.txt:
Git is a version control system------!!!!!.
Git is free software------!!!!!.
hello world
ha ha h
brancha 666
先在远程新建 go 分支,然后本地在该分支上开发
我新建了一个分支feature2