赞
踩
localhost双击(默认在当前分支)—>文件状态—>暂存所有—>提交—>master双击—>location右击—合并location至当前分支—>拉取—>推送—>localhost双击分支切换回来
遇到的问题及解决:
1、当前分支—>暂存—>提交—>双击切换到某个线上分支—>拉取(合并)后发现合并错了分支,此时推送上面有很多文件需要推送,千万不要推送,你还有救。一旦推送线上的代码就变了,那么怎么撤销此次操作呢,方法很简单
首先删除这个远端分支。在线上分支右击,删除这个分支,如果有弹窗提示,复制提示引号里面的这句话,大概是这样的 git branch -D [branchname],点击sourcetreen视图右上角"命令行模式",在命令窗口输入git branch -D [branchname],删除成功。
接下来是重新添加这个分支。在右边”远程“下面找到要拉取的远程分支,右击选择”检出XXX“。到这里就完成了。
代码提交
git checkout localhost --默认在当前分支
1、git status --查看修改状态
2、git add . --暂存所有;如果要取消暂存git rm --cached 文件名/.,修改内容还在
3、git commit -m <注释> --提交暂存的文件,并添加注释
4、git pull --rebase origin <branchname> --将服务器代码同步到本地—拉代码
5、git push origin <branchname> --本地同步到服务器—推送
拓展:
在2步暂存代码时如果报类似warning: LF will be replaced by CRLF in xxx这样的错误
git config --global core.autocrlf false
// 解析:不同操作系统下,处理换行的方法不同。core.autocrlf是git中负责处理line ending的变量,可以设置3个值:
// true、false、inout。false表示ine endings将不做转换操作,文本文件保持原来的样子。
在第4步拉取代码时如果产生冲突,在冲突文件中修改后
1、git add <冲突文件路径> --暂存冲突文件
2、git rebase --continue
3、git pull --rebase
4、git push origin <branchname> --这一步就替代了上面的第5步
在第4步拉取代码时拉取错了分支
首先慎用git reset --hard这个命令,百度都是让撤回操作,但是一撤回,本地修改的东西即使add commit了也找不到了
--hard这个参数代表“删除工作空间改动代码,撤销commit,撤销git add,恢复到了上一次的commit状态”,你可能会丢失本地改动的代码,所以一定要先保存一份本地代码再做此操作,否则你会哭!!
目前我还没找到好的解决方法,如果你有好的方法欢迎留言。
在第4步拉取代码时报错,提示Authentication failed for没有认证
这个一般是初次使用的时候没有认证,认证失败。
解决方法:在windows凭证上删除项目git地址证书。
步骤参考:https://blog.csdn.net/oqqYYYY1/article/details/80791044
在第5步推送代码时报错,提示[rejected] <分支名> -> <分支名> (fetch first)或Git: RPC failed: curl 56 Recv failure: Connection was reset
使用git push -f 推送到远端
// 关于这个Git: RPC failed: curl 56 Recv failure: Connection was reset提示,百度更多提到的是克隆的时候出现的这个错误,给出的解决方法:
git config --global http.postBuffer 524288000 // 更多提到的是加大缓冲区大小
git config --global http.sslVerify "false" // 这个我试了没用,本身设置的就是false
git config --global core.compression -1 // 压缩配置,对我也没用
// 然后我是在试https://codeleading.com/article/56225175941/这个链接下面方法的过程中摸索出来的方法
// 这个方法是可行的,但我最终也没用这个方法
git lfs install
git lfs track "*.so"
git add .gitattributes
我远程上推送了.gitattributes这个文件,但我又想去掉,因为这个别人可能并不需要(之前都是好的,可能是我换了下网络,就我的有问题)。本地先把.gitattributes这个文件的提交下掉,然后本地这个下掉后的提交强推到远端(这就是本次的解决方案命令)。(这个方法命令下面“代码回退”有提到),这一步操作完后我又试了下git正常的推拉,发现竟然好了。
我本来打算后面.gitattributes放在本地然后忽略这个文件的修改(下面有介绍该命令),每次就不用提交了,只对我本地使用,看来也不需要了。
本地无任何修改拉服务器代码到本地:
1、git fetch -a --将远程主机的更新全部更新到本地
2、git checkout <branchname> --如果当前不在分支目录下切换到分支目录
3、git pull --rebase orign <branchname> --将服务器代码同步到本地
代码合并(将一个分支发布到另一个分支上,branchA拿branchB的代码):
1、git checkout branchA --切换到要合并的分支上(本地)
2、git pull origin branchA --把该分支远程上的代码pull到本地这个分支上,如果是自己一个开发就没有必要了
3、git merge --no-ff branchB --对该本地分支的代码进行合并,no-ff严谨规范点的写法,可去掉
4、git push origin branchA --将本地分支合并后的代码推送到远程分支上
// 如果只想将branchB上面的某一次提交合并到branchA,将第3步换成以下命令
首先:git log --查看需要合并提交的commitID
其次:git cherry-pick <commitID> --本地已经合并了(不需要指定要合并过来的分支名称)
提交部分文件:
将指定文件放入缓存区(只能放编辑的文件,不能放新增的文件),本地代码将丢失(可恢复),是分支上的内容,本地没修改完的代码不想提交可以先放暂存区
1、git stash <filename> -- 暂存不需要提交的文件(不指定文件就是暂存所有修改)
3、git add <filename> --提交需要提交的文件
后面接正常提交
git stash list --查看暂存记录
git stash pop --如果要恢复暂存内容,本地代码恢复(只恢复某次暂存加stash@{num})。
git stash show stash@{0} --查看某次记录的所有文件(只显示文件名)
git stash show -p stash@{0} --暂存某次记录的所有文件修改内容
修改(设置)提交用户
git config --list --查看当前配置,有用户的账号和邮箱,也可以只查看当前账号邮箱
git config user.name --查看当前账号
git config user.email --查看当前邮箱
git config --global user.name yourNeedUserName --修改当前全局的用户名
git config user.name yourNeedUserName --如果只需要修改当前项目的用户名,此时命令要在需要修改的项目下执行
git config --global user.email yourNeedUserEmail --修改当前全局的用户邮箱
git config user.email yourNeedUserEmail --如果只需要修改当前项目的邮箱,此时命令要在需要修改的项目下执行
修改git仓库地址
git remote set-url origin <new_git_address> --需要具体到项目目录
拓展:git remote -v --查看当前仓库地址(修改前后可以核验下),如果git还有问题需核验用户信息(修改用户信息见上)
查看提交内容
git diff <filename> --查看文件修改的内容,这一步要在git add .暂存文件之前查看,查看后输入q,按enter键盘退出 git log --查看每个人提交的信息 git log --author=<username> --查看某个人提交 git log -p --比较提交 git log <filename> --查看文件的历史提交,不显示内容修改 git log -p <filename> --查看文件的每一个详细的历史内容修改 git log -p -3 <filename> --显示最近的3次提交 git show <commitID> --查看某次提交的文件修改内容 git show <commitID> --stat --查看某次提交的文件
代码回退
1、git log --查看所有的历史版本提交ID 2、git reset --hard <commitID> --本地代码回退到某次提交(不带ID就回退到最新一次版本提交) 3、 git push -f -u origin master 推送到远程服务器(如果只是想看想测试这次提交就不要推送到远端了) 4、git pull --重新拉代码(如果没有push,本地代码完美回到最新代码) //如果只是想回退某个文件(最新一次的提交,比如在工作区已修改,但并未提交到暂存区(即并没有add),撤销文件修改) git checkout -- <filename> //如果想回退/撤回某个文件的某次提交 1、find -name <filename> --查看这个文件的完整路径 2、git log <filename> --查看文件的历史提交 3、git reset/checkout <commitID> <filename> --使用reset或者checkout回退某个文件的某次提交 //删除、放弃、去掉某次提交(适用于中间的某次提交) // 方法一: git revert <commitID> // commitID为要删除的提交id(本地代码会删除掉此次提交修改的内容,与git reset --hard不同,这里相当于重新修改了代码,需要走正常的代码提交流程) //方法二:功能更强大 git rebase -i <commitID> --具体使用查看下面的“自由选择删除多条提交”讲解
自由选择删除多条提交
1、git rebase -i <commitID> --commitI为要删除提交的下一次提交(紧跟着他后面的一次提交)id
2、此时会弹出编辑界面,将要删除的commit之前的单词改为drop
3、退出编辑:Esc-:wq(如果没有任何修改退出用q,如果修改了不保存修改用q!强制退出,注:!表示强制,wq!强制修改)-Enter
4、git log --查看要删除的commit是否删除
5、git push –force ---强制推送到远程仓库
.gitignore 里添加的文件无法忽略
1、git pull --为避免冲突需要先同步下远程仓库
2、git rm -r --cached .(或filename) --在本地项目目录下删除缓存(主要就是因为有本地缓存,其实到这一步就可以了)
3、git add .(或filename) --add文件
4、git commit -m "同步ignore中的文件" --将项目中文件提交到本地仓库缓存中
5、git push --将修改推送到远端
比较两个分支的差异:
git diff branchA branchB --显示所有差异文件的具体代码差异
git diff branchA branchB --stat --显示两个分支差异的文件有哪些
git diff branchA branchB <文件路径> --显示某个文件的代码差异
其他命令:
git rebase --abort --是无风险的操作,会回到rebase操作之前的状态,2个分支的commits毫发无损(但最近发现也不是那么的无风险,可能是我rebase失败了,所以本地代码丢失了)
git branch -a --之后master查看远程分支(如果git branch -a没有发现要找的分支则用fetch,git fetch -a然后再git branch -a查看所有分支,checkout到要去分支),
git branch --查看本地分支
git checkout <branchnanme> --切换到某个分支
git config --global http.sslVerify false --git clone报unable to access错误时,这个应该是修改git的配置
git fetch -p --分支同步,如果有人新增、删除或修改了分支可以使用此命令更新下本地分支
git update-index --assume-unchanged <filename> --忽略本地文件的修改(不需要修改和提交.gitignore文件)
git update-index --no-assume-unchanged <filename> --取消忽略的文件
git branch -D <branchnanme> --删除某个分支
更多checkout语法参考https://zhidao.baidu.com/question/361707989577121412.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。