更新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