使用git碰到的一些小问题,记录一下,以免忘记
第一个
第一次提交的时候出现无法推送的问题,解决办法是:git pull origin master(后面的origin和master是你的主机名和分支名)
//将已跟踪文件加入到不提交队列中
git update-index --assume-unchanged xxx
执行命令将xxx加入不提交队列
git update-index --no-assume-unchanged xxx
执行命令将xxx取消加入不提交队列
// 更新某一个文件或者文件夹
git fetch origin master // 先获取最新的分支代码到本地
git checkout origin/master c.txt // 然后更新某一个文件
// 拉取最新代码并且切换到另外一个分支上
1. 找一个干净目录,假设是git_work
2. cd git_work
3. git clone http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录
4. cd project
5. git branch -a,列出所有分支名称如下:
remotes/origin/dev
remotes/origin/release
git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
// 原来在1.0.2分支上开发,现在切换到1.0.3分支上,但是本地看不到1.0.3的分支,需要先拉取最新分支到本地
git fetch 表示从远程获取其他用户push上来的新分支
git checkout -b 1.0.3 origin/1.0.3这样就切换到1.0.3分支了
// 新建本地分支并切换到新建的分支上
git checkout -b 1.1.3
// 删除本地的新建分支1.1.3,如果你当前就是在1.1.3上,请切换到其他分支上再删除1.1.3
git checkout 1.1.1 // 切换到1.1.1分支上
git branch -d 1.1.3 // 删除1.1.3的本地分支
// 合并其他分支的某个文件到当前分支下
git checkout 1.0.2 aaaa.java
1.0.2表示你要合并的哪个分支,后边的表示你的文件
// git .gitignore无效问题
把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
// 删除远程分支
git push --delete origin 分支名
// 删除本地分支
git branch -m 旧分支名 新分支名
// 本地和远端分支重新命名
本地分支重命名
git branch -m oldbranchname newbranchname
修改远端分支(可以先删除远端分支,然后将本地的分支push到远端)
git push origin --delete oldbranchname
git push origin newbranchname(这个分支必须本地有,如果没有需要现创建本地分支执行:git checkout -b newbranchname)
// remote:HTTP Basic:Access denied
remote: HTTP Basic: Access denied出现这个错误的时候
git config --system --unset credential.helper
执行完上边一行代码之后,如果没有报错,就再download一下代码
如果报错了,也是报跟权限相关的并且是error开头的,那么暴力点,直接把git卸载重新安装,我就是这么解决的。
// git pull 错分支了
本来应该pull B分支的,结果pull A分支了,如何解决这个问题呢?我这的解决办法是去除了commit本地的记录,直接暴力还原到之前的版本,步骤如下
1、运行git reflog
命令查看你的历史变更记录,如下:
fdb70fe HEAD@{0}: pull origin newpbft: Fast-forward
40a9a83 HEAD@{1}: checkout: moving from guan to master
2、然后用git reset --hard HEAD@{n}
,(n是你要回退到的引用位置)回退。
比如上图可运行 git reset --hard 40a9a83
搞定