以下内容是在初使用Git的时的笔记记录,会不定时更新。

1. Git使用操作

1.1. 代理

  • 设置代理

如果需要下载墙外的仓库:

//1080 可以根据自己买的vpn服务器端口
git config --global http.proxy 'socks5://127.0.0.1:1080'
 
git config --global https.proxy 'socks5://127.0.0.1:1080'
  • 删除代理
git config --global --unset http.proxy
 
git config --global --unset https.proxy

1.2. Android创建忽略文件.gitignore

  • 一般如果使用Android Studio创建的时候,IDE会自动给我创建.gitignore文件,但有时候我们也需要自定义此文件。因此,我们可以从 github/gitignore 项目中下载相应的文件,放到我们项目的根目录即可。

1.3. git撤销commit

git commit --amend

1.4. git 回到某个版本

git reset id //只更改版本,不修改代码
git reset --hard id //版本和代码都修改

1.5. git 多url推送

第一个url

git remote add origin url

然后其他的

git remote set-url --add origin url

1.6. git push origin master

  • git push 推送到默认分支
  • git push origin 推送到主机为origin的远程服务器上
  • git push origin master 推送到主机为origin的服务器上的master分支

1.7. git 放弃本地修改,强制拉取更新

  1. 从服务器拉取数据到本地
git fetch --all
或者
git fetch 主机名 分支 (example: git fetch origin dev)
  1. 把Head指向最新拉取的分支
git reset --hard 主机名/分支 (example: git reset --hard origin/dev)
  1. 重新拉取(这步可忽略)
git pull 主机名 分支

1.8. git 修改分支名称

git branch -m oldBranchName newBranchName //修改本地的
git push //推送到远程分支

1.9. git push 出现错误:error: failed to push some refs

1、在使用git 对源代码进行push到git仓库时可能会出错

2、出现错误的主要原因是本地和远程仓库中的代码不一致导致

3、可以通过如下命令进行代码合并【注:pull=fetch+merge]

git pull --rebase origin master

4、此时再执行语句 git push 即可完成代码上传到远程仓库

2. 查看所有分支情况

git branch -a

2.1. 删除远程分支

git push origin --delete dev

2.2. git提示Auto packing the repository in background for optimum performance

查资料,原来是自己本地一些 “悬空对象”太多(git删除分支或者清空stash的时候,这些其实还没有真正删除,成为悬空对象,我们可以使用merge命令可以从中恢复一些文件)

解决: (删除掉.)
1.输入命令:git fsck -.-lost-found,可以看到好多“dangling commit”
2.清空他们:git gc -.-prune=now,完成

"git rebase -i HEAD~xxx"是修改git 历史记录的一个很有用的命令。

但是有时在执行该命令时会出现以下错误:
$ git rebase –i HEAD~8
fatal: Needed a single revision
invalid upstream –i

二、错误原因
当前执行操作的点不在任何分支上,或者可能rebase后面的参数是一个错误的分支;
当前执行操作的点前面的提交不够8个。

三、解决办法
确认'-i' 之后的参数是否正确;
确认需要rebase的提交相对于'HEAD'的序号,一种极端情况是想从当前分支的第一个提交开始rebase,可以使用以下命令:git rebase -i --root。

3 修改本地分支名称和远程分支名称

本地分支重名名

git branch -m old_branch new_branch

删除远程分支并重新推送

git push origin :old_branch
git push origin new_branch:new_branch