美文网首页
git 命令复习

git 命令复习

作者: 再见地平线_e930 | 来源:发表于2021-07-11 11:19 被阅读0次

    一段时间没碰 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 devgit 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 重新提交一次就行,之前的更改也会被提交上去

    相关文章

      网友评论

          本文标题:git 命令复习

          本文链接:https://www.haomeiwen.com/subject/rerkpltx.html