美文网首页
git的使用

git的使用

作者: zsyyyyy | 来源:发表于2019-06-24 19:31 被阅读0次

https://www.liaoxuefeng.com/wiki/896043488029600

把一个文件放到Git仓库只需要两步。

//第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add .
//第二步,用命令git commit告诉Git,把文件提交到仓库
$ git commit -m "更新"

版本回退

//这里有修改过几个版本的例子
//版本一
           <div>
               try   //commit -m finish
           </div>
//版本二
           <div>
               try
               我修改过了   //commit -m "修改"
           </div>
//版本三
           <div>
               try
               我修改过了
               我又改过了    //commit -m "再次修改"
           </div>

git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是"再次修改",
上一次是"修改",最早的一次是"finish",每提交一个新版本,实际上Git就会把它们自动串成一条时间线。如果使用可视化工具查看Git历史,就可以更清楚地看到提交历史的时间线:


c1c0dc26ab70dfe623f8dbbc2a9b120.png

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

0a828bd00c35027434684b239aff3b6.png
看到的一大串类似f94f3...的是commit id(版本号)
好了,现在我们启动时光穿梭机,准备把change.html回退到上一个版本,也就是commit提交说明 "修改" 的那个版本,怎么做呢?
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交f94f3...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
在,我们要把当前版本append GPL回退到上一个版本"修改",就可以使用git reset命令:
b58141f0afea44f6ffba077686f7f33.png
//回退到这个版本了
            <div>
                try
                我修改过了
            </div>

还可以继续回退到上一个版本 "再次修改",不过且慢,然我们用git log再看看现在版本库的状态:


01245d6209106fcf69b78bf94eb2bfa.png

最新的那个版本append GPL已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?
办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个 "再次修改"的commit id是f94f3...,于是就可以指定回到未来的某个版本


7926cf9e4eb53fbed78a287fe70ed4e.png
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
再小心翼翼地看看change.html的内容:
//指定回到未来的某个版本
            <div>
                try
                我修改过了
                我又改过了
            </div>

现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
Git提供了一个命令git reflog用来记录你的每一次命令:


95ee576326ebef5315e971720f7f427.png

从输出可知, "再次修改"版本的commit id是f94f351,现在,你又可以乘坐时光机回到未来了。
版本回退小结:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

工作区和暂存区

工作区(Working Directory)
就是你在电脑里能看到的目录,
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。


059c927ae7340c6e9741b9f2afd28f6.png

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
俗话说,实践出真知。现在,我们再练习一遍,先对chang.html做个修改,比如加上一行内容:

            <div>
                try
                我修改过了
                我又改过了
                我再改过了
            </div>

然后,在工作区新增一个try.html(内容随便写)。
先用git status查看一下状态:


18e5f07396868fc5a62cf43e01e5f8f.png

Git非常清楚地告诉我们对chang.html被修改了,而try.html还从来没有被添加过,所以它的状态是Untracked(未跟踪),表示还没add。
现在,暂存区的状态就变成这样了:


0.jpg

现在,使用命令git add,把chang.html和try.html都添加后,用git status再查看一下:


4978ce39f2cf9c3927cc66f6b2d0645.png

所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,然后$ git commit -m "增加了try.html" 就可以一次性把暂存区的所有修改提交到分支。
现在版本库变成了这样,暂存区就没有任何内容了:


0.jpg

管理修改

现在,假定你已经完全掌握了暂存区的概念。下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。
你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
为什么说Git管理的是修改,而不是文件呢?我们还是做实验。第一步,对chang.html做一个修改,比如加一行内容:

            <div>
                try
                我修改过了
                我又改过了
                我再改过了
                我增加了一行
            </div>

然后,添加:

$ git add readme.txt
$ git status

然后,再修改chang.html:

            <div>
                try
                我修改过了
                我又改过了
                我再改过了
                我增加了一行
                我再再改过了
            </div>

提交:commit
提交后,再看看状态:
git status
咦,怎么第二次的修改没有被提交?
第一次修改 -> git add -> 第二次修改 -> git commit
小结
现在,你又理解了Git是如何跟踪修改的,每次修改,如果不用git add到暂存区,那就不会加入到commit中。

撤销修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file(文件名)

场景2:现在假定是凌晨3点,你不但写了一些胡话,还git add到暂存区了:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,庆幸的是,在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件del.html到Git并且提交:

$ git add test.txt
$ git commit -m "add test.txt"

//另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- test.txt
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

git分支
git branch 查看当前分支
在命令行创建分支:
git branch dev创建分支,dev为创建的分支名
git checkout dev 切换分支,dev为分支名
删除分支:git branch -d dev dev为分支名
不能删除当前分支,需要切换到其他分支,再删除

创建分支:切换分支 :往切换到的分支添加内容 然后git add .
git commit -m 123
git pull
git push --set-upstream origin test(分支名字),第一次push一定要添加 --set-upstream origin test(分支名字),是为了关联该分支,然后添加的内容就是push到test这个分支了。

也可以创建分支 ,切换分支 ,
然后git add .
git commit -m 123
git pull
git push --set-upstream origin test(分支名字),
下次切换到该分支,再添加内容 ,然后四步骤也行

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

码云创建分支:


fee1de78acb2eb5d570e669d9a14fd3.png

选择分支,然后clone

直接指定clone某个分支:

git clone -b xxx .git地址 xxx为分支

克隆后把它放到新创建的分支(注意克隆之后记得退出git,重新进入根目录打开git在运行命令):
下面这样就把克隆下来的项目放到自己新创建的分支了


e8c94d9fb2a234e82fb21b7c63f5249.png

第二:克隆之后创建自己的分支,然后切换到自己的分支,现在我就可以通过git pull origin 拉远程分支的代码到自己的分支了。


8c25079f293a09a10a3d4c6a648c7e1.png
8fc3b541e3de32ee7dec7383a5aeb1b.png
创建的第一次push需要git push --set-upstream origin dev-zhang关联自己的分支

查看pull远程分支:

$ git branch -a  查看远程分支
$ git pull origin dev 拉远程分支代码 dev为分支名
如果报这个错fatal: Authentication failed for 'http://git.jidiankj.cn/ydk/ydk-manager.git/'
在 git 输入 git config --system --unset credential.helper
会弹框输入gitlab账户密码 $ git pull origin dev
$ git add .
$ git commit -m 123

生成密钥:
git config --global user.name
git config --global user.email
生成密钥:
cd ~/.ssh/
ssh-keygen -t rsa -C "xx@qq.com"(邮箱是绑定gitlap账号的邮箱)
找到.shh文件,用记事本打开id_rsa.pub文件
然后点击生成密钥:把id_rsa.pub的文字复制进去大的框,标题:随便(需要登录gitlap)
然后再clone,如果报这个错fatal: Authentication failed for 'http://git.jidiankj.cn/ydk/ydk-manager.git/'
在 git 输入 git config --system --unset credential.helper
再次clone 会弹框输入gitlab账户密码

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

pull远程最新代码到自己分支:
最好先保存当前自己的代码先提交到自己的远程仓库,
回头如果有问题,你还能回滚
然后取拉取dev的

$git pull origin dev

拉远程分支代码 dev为分支名(之前$ git branch -a 查看远程分支 确定是自己分支的代码)
产生冲突:


c90ff9c5ddb052cf218a402a1d4f0e8.png

解决冲突:
可以输入git status 可以告诉我们冲突的文件
在vscode提示,把一些不需要的删掉。
确定没问题之后,
再推到自己的分支,保证自己的代码是最新的,

最好每天在自己分支拉一次dev的代码(自己的最新的代码推到远程库之前再拉,报错还能回退),保证自己分支的代码是最新的。解决冲突之后再push到自己的远程库
如果需要合并的话,切换到dev分支,git merge zhang 把自己的代码合并到dev 然后提交上去 再切回来自己的分支,
更好的解决方法:

查下当前分支,做完功能先把自己的代码push到自己的远程库,然后在自己分支合并dev,没问题后提交到自己的远程库,然后切换到dev拉自己分支(git pull origin dev),没问题再推上去(add commit 四步走)。

创建新的分支,拉取master去改代码,用来发布另一套版本
1、如果在自己本地已经存在主干代码,直接创建切换分支 git checkout -b 分支名字
2、再切换到主干更新代码 git pull origin master
3、再切换到自己新创建的的分支,git pull origin master ,
4、git add .
git commit -m ""
git push --set-upstream origin test(分支名字),第一次push一定要添加 --set-upstream origin test(分支名字),是为了关联该分支,然后添加的内容就是push到test这个分支了。

第二种情况
就是别人创建新的分支,用的这个新的分支去改代码用来发布另一套版本
1、直接创建切换分支 git checkout -b 分支名字
2、然后把别人创建新的分支给拉取到本地以及关联 git fetch origin dev1.1-0604:dev1.1-0604
3、再切换到该分支拉取代码,git pull origin dev1.1-0604
4、切回来拉取 dev1.1-0604代码提交即可
版本回退:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

(HEAD detached at 4.1.7)分支游离状态

切回 git checkout master
git pull origin
git checkout feature/zsy-copy/1003 4.1.7(在4.1.7基础上创造feature/zsy-copy/1003分支)

相关文章

  • Git常规使用

    Git怎么使用?使用 git commit 进行提交操作时,Git都做了什么? Git怎么使用? 下载、安装Git...

  • GIT和Github

    #Git的初识 ##Git 的使用 Git 使用初尝试 新建项目来操作 克隆已有项目来操作 Git 的使用 by ...

  • AD 使用 Git 的注意事项

    使用 Git 管理项目 Altium Designer 支持使用 Git/SVN 用以版本控制。如果使用 Git,...

  • git

    使用git add . 代替 git add *使用git add之后,怎样恢复?

  • git代理配置

    git http 使用 http proxy git http 使用 https proxy git http 使...

  • Git命令使用

    Git命令使用 前言在使用Git命令之前都使用可视化工具SourceTree操作git,现在需要Git Andro...

  • vscode操作git总让输入用户名密码

    clone使用git地址,不要使用https地址修改.git/config文件中的url = git@git.pl...

  • Git 的基本使用

    Git相关命令 安装Git 在Windows上安装Git (我是使用的Windows)在Windows上使用Git...

  • 前端学习路线(2)——Git使用、DIV+CSS布局

    Git使用、DIV+CSS布局 1. Git使用 链接:git下载链接:git for windows(下载速度可...

  • Git 18使用别名

    GIt 使用别名 ======== 在Git中可以将经常使用的命令以别名缩写的方式简化使用 命令 git conf...

网友评论

      本文标题:git的使用

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