git 使用方法

更新8:
删除远程分支:

git push origin  --delete  要删除的分支名字

停止跟踪某个文件或文件夹;

git rm --cached 文件的路径
如果是文件夹,就用:
git rm --cached -r 文件夹路径
git commit -m 'stop tracking'
git push origin 要停止跟踪的文件所在的分支名

更新7:
把本地分支推送到远程服务器(服务器本来没有这个分支)

git push origin  本地分支名:远程分支名

更新6:
1、解决每次都需要输入用户名和密码,使用以下命令保存用户名和密码,第一次需要输入用户名和密码,以后拉取代码提交代码都不需要输入了。

git config --global credential.helper store

更新5:
1、本地版本回退

git reset --hard 要回退到的版本号

2、回退服务器的版本(在本地版本回退的基础上,提交到服务器即可,但是提交的时候会出现版本低的问题,添加–force参数即可):

git push origin 要提交到的分支名  --force

更新4:
1、删除本地分支:

git branch -D 本地分支名

2、删除远程分支:

git push origin --delete 远程分支名

3、拉去远程分支到本地(新建本地分支,拉取远程到本地):

git checkout -b 本地分支名  origin/远程分支名

更新3:
团队其他成员修改了某文件并已提交入库,你在pull之前修改了本地该文件,等你修改完代码再pull时,这时会报错如下错误:
error: Your local changes to the following files would be overwritten by merge
远程服务器代码和本地的冲突,想要服务器的直接覆盖本地代码:

git reset --hard
git pull origin master

如果想要保留本地的修改的代码,操作如下:

git stash #封存修改
git pull origin master
git stash pop #把修改还原

更新2:
撤销 git add 的命令:

git reset HEAD 路径/文件

路径/文件指git add 的文件
分割线************************************
常用命令更新1:
1.1 删除添加的远程仓库

git remote rm origin

1.2 推送到远程仓库,需要先添加

git remote add 复制远程仓库的http克隆地址

1.3 如果远程的文件和本地的不一样,会出现一下错误:

错误:fatal: refusing to merge unrelated histories
解决方法:git pull origin master --allow-unrelated-histories

1.4 push的文件太多或者文件太大汇报一下错误:

the remote end hung up unexpectedly Everything up-to-date

默认 Git 设置 http post 的缓存为 1MB,使用命令将git的缓存设为500M,重新配置一下postBuffer值

解决方法1:$ git config --global http.postBuffer 524288000
解决方法2:直接修改config参数,
windows:
./git/config中,加入以下两行:

[http]
postBuffer = 524288000

linux:
添加:git config http.postBuffer 524288000

1.5
图片来源网上,侵删
图片来源网上,侵删

1、添加远程仓库
(1)首先,比如我们要在github上建立仓库,我们得在github上建立一个仓库,在本地的仓库目录下,生成秘钥和公钥,然后把公钥添加到github,这样就是本地仓库和远程建立了一个联系。这部分简单就不详细说了。创建秘钥和公钥的命令:

ssh-keygen -t rsa -C "youremail@example.com"
git config --global user.name "你的名字"
git config --global user.email "你的邮箱地址"
git config --global push.default simple

(2)点击远程仓库的克隆,复制http那个链接。在本地仓库的命令行,添加远程仓库。命令如下:

git remote add origin 刚才复制的http链接

(3)在本地仓库执行以下命令,进行一下本地仓库的初始化。

git init

(4)推送本地仓库内容到刚才建立的远程仓库。以下命令执行。

git push -u 远程主机(默认为origin) 本地分支  远程分支
#具体例子:
git push -u origin master master(第一次推送,需要-u,后边不需要)
#后边提交可以简化为如下命令
git push origin master

(5)查看远程仓库

git remote

2、分支和合并
(0)创建分支

git branch 分支名

(1)创建分支并切换到了该分支

git checkout -b 分支名

(2)查看和切换分支

git branch
#以下命令会显示本地和远程分支,远程分支为红色,当前所在分支前边有※
git branch -a
#下边命令进行分支切换
git checkout 分支名

#在哪个分支上,进行commit,就默认到那个分支。
(3)删除分支

git branch -d 分支名

(4)合并
首先切换到分支dev,然后再b.txt中加入222,如下图所示。
在这里插入图片描述
然后进行add和commit

git add b.txt
git commit -m "在b.txt中添加22222222"

现在查看b.txt其中已经有了22222
在这里插入图片描述
然后切换分支到master,我们目的是把分支代码合并到master,所以我们需要切换到master上进行操作。

git checkout master
cat b.txt

发现内容为空,因为刚才修改的是分支dev,所以我们需要进行merge。
执行以下命令合并:

git merge  分支名(我这里是dev)

然后进行查看,就可以发现,现在的master上也有了b.txt中的内容2222222
(5)合并冲突解决
建立一个分支做实验

git checkout -b fenzhi1

在新建的分支fenzhi1的b.txt中添加内容3333
在这里插入图片描述
然后add和commit

git add b.txt
git commit -m "fenzhi1上的b.txt中加入内容,测试冲突"

然后转到master分支:

git checkout master
cat b.txt

转换后查看内容b.txt,发现内容为空。我们在master下的b.txt中加入44444,如下图
在这里插入图片描述
添加完内容之后,可以查看当前的工作区的文件的状态

git status

如下图,提示b.txt中内容有被修改。
在这里插入图片描述
然后,add和commit

git add b.txt
git commit -m "master上的b.txt中加入内容,测试冲突"

现在:我们知道在master上的b.txt文件中内容为444444,fenzhi1上的b.txt文件内容为3333333,现在我们在master上进行合并fenzhi1,看会出现什么情况。
合并命令如下:

git merge fenzhi1

提示我们出现冲突:在这里插入图片描述
进行git status 查看冲突提示
如下图:
在这里插入图片描述
查看冲突的部分,直接打开master下的b.txt查看,发现master下的b.txt中已经整合了fenzhi1.txt的内容,并作了区分:如下图
在这里插入图片描述
现在我们需要修改当前冲突的文件的内容,留下正确的部分,然后进行add和commit就可以完成merge。
修改后提示冲突的文件之后如下图:
在这里插入图片描述
然后和正常一样,进行如下操作就可以了
在这里插入图片描述
现在可以查看提交历史记录

git log

如下图所示:
在这里插入图片描述
3、查看文件变化:

git diff 文件名
#查看所有文件的内容变化,不需要加具体的文件名
git diff 

如图:
在这里插入图片描述
(1)图中红色箭头所指为仓库中的a.txt文件,原内容为空
我做的变动是给加入了789,所以显示不同是“+789”表示添加了内容
(2)图中绿色箭头是仓库文件test2.txt。运来内容是第一行123,第二行456
我做的修改是在删除了456,并且把第一行的123改成了143。git以行为单位,所以不管删除了还是修改了,都表示为改行被删除的样子,即-123和-456.
(3)图中绿色箭头是(2)中的修改内容。就是git把我对于第一行123修改为143认为是新增了一行。
(4)看到了文件的变化,然后就可以从工作区到暂存区了

git add 文件名

(5)从暂存区到本地仓库

git commit -m "注释"

(6)可以查看暂存区还有没有内容:

git status

4、本地版本回退
利用以下命令可以查到commit的历史记录,里边有版本号,

git log
#更复杂的方法:
git log --graph --pretty=oneline

在这里插入图片描述
可以利用以下命令回滚到最近一次提交之前

git reset --hard HEAD^

执行代码之后,git log会发现最近的提交记录已经变为前变的版本提交记录了,就说明回滚成功。
在这里插入图片描述
反向回滚方法,就是回滚到前一个版本之后,又想在返回去,就可以用通用的回滚方法了,首先执行一下代码,查看每次提交的版本号

git reflog

在这里插入图片描述
再用以下命令进行回滚:

git reset --hard 版本号

注:
远程仓库的回滚,我觉得就是把本地的回滚之后,全部commit,然后push到远程即可实现远程的回滚。
5.2 工作区内容回滚
我们在test2.txt中加入第三行,999。如下图。
在这里插入图片描述

利用如下命令:

git status

看到提示工作区内容有修改。

在这里插入图片描述
此时,可以利用以下命令回滚到修改前的版本;

git checkout -- 文件名(我这里是test2.txt)

此时在利用git status,发现已经没有提示工作区有内容变化,而且查看文件test2.txt确实已经变回去了,没有了第三行的999。(以上的方法,只能撤销工作区的,就是没add之前的,add之后就不管用了)

以上方法,就相当于一个撤销操作,对于删除的文件,也可以撤销回来,前提是都没有add,没有commit
5、bug分支:
在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下:

图片描述

并不是我不想提交,而是工作进行到一半时候,我们还无法提交,比如我这个分支bug要2天完成,但是我issue-404 bug需要5个小时内完成。怎么办呢?还好,Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作。如下:

在这里插入图片描述

所以现在我可以通过创建issue-404分支来修复bug了。

首先我们要确定在那个分支上修复bug,比如我现在是在主分支master上来修复的,现在我要在master分支上创建一个临时分支,演示如下:

在这里插入图片描述

修复完成后,切换到master分支上,并完成合并,最后删除issue-404分支。演示如下:

在这里插入图片描述

现在,我们回到dev分支上干活了。
在这里插入图片描述

工作区是干净的,那么我们工作现场去哪里呢?我们可以使用命令 git stash list来查看下。如下:
在这里插入图片描述

工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:

1.git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2.另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
演示如下

在这里插入图片描述
参考:https://www.cnblogs.com/seven-ahz/p/7712125.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值