一段时间没碰 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
两个分支的 readme.txt 文件的最后一行更改的内容不同
如果已经把 feature1
分支合并到了 dev
,那么 feature2
分支在合并到 dev
的时候就会提示有冲突不能合并。
5.2 冲突解决:把 feature2
分支上的 readme.txt 文件改成和 feature1
分支上的 readme.txt 文件一摸一样就可以了,如文件内容所示,把 2 改成 1 就可以了
开发新需求的一个 git 流程
1. 在本地终端执行 git checkout -b feature/test
命令在本地新建并切换到 feature/test
分支,并在该分支上进行新需求的开发;
2. 在本地完成开发后执行 git add .
(这里的“.”表示全部变动的文件)命令,把改动文件添加进暂存区;
3. 执行 git commit
命令,然后再输入改动说明;
4. 第一次推送代码,需执行 git push origin feature/test -u
命令在远程仓库新建一个同名的 feature/test
分支并与本地 feature/test
分支关联,该命令还会将本地修改的内容推送到远程分支上,后续如果还有改动内容则直接通过 git push
命令推送上去即可;
5. 改动内容推送到远程仓库后则需要提一个 Pull Request 进行代码的合并(需选择对应的源分支和目标分支);
6. 提了 PR 之后自己再查看一下代码变动 diff 看是否有什么问题,确定没问题之后把 PR 链接发给 Reviewer 进行 Code Review;
7.补充:如果第一次 push
时是直接使用的 git push
命令,远程仓库是无法与本地仓库连接的。解决办法:随便在需要提交的文件增加个换行,再 git add、git commit、git push origin feature/test -u 重新提交一次就行,之前的更改也会被提交上去
网友评论