Git操作速查

舍弃本地修改

git 撤销,放弃本地修改

  1. 未add时
    git checkout .

  2. add后,commit前
    git reset HEAD .
    回到1,继续
    git checkout .

  3. commit后

    1
    2
    git log
    git reset --hard commitid

处理git push文件过大的办法

在进行git push的时候,遇到了报错HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large

我觉得可能是因为保存rnn模型的文件夹比较大,就在.gitignore加上了那个目录。(让.gitignore生效的办法:git 修改.gitignore后生效),然后再push还是不行,我不确定是不是因为之前commit的还在。

这个错误本身搜到的解决方案一般是提高文件传输限制之类的,但是我是希望之前的较大的那个commit不要被push上去。于是我搜到了一个解决方案是用git reset: git push 推送大文件失败的处理办法

也就是说,下次遇到类似的问题,先用git log查commitid,然后用git reset撤销commit,之后修改.gitignore再使其生效,最后commit&push即可。

另外,reset也可以用于强制更新本地版本,只需在git pull前运行

git reset --hard

即可

保持本地仓库和远程同步

远程仓库,个人fork,和本地仓库的逻辑关系如下图:

img

当远程仓库更新时,需要先把更新拉到本地,合并好后再push到个人fork的仓库中。具体流程为:

  1. 添加远程仓库到本地remote分支

    1
    git remote add upstream  http://xxxxxx.git
  2. 查看当前仓库的远程分支

    1
    git remote -v
  3. fetch 远程分支

    1
    git fetch upstream
  4. 合并 fetch 的分支到本地(此处应该和develop保持一致,故merge develop分支)

    1
    git merge upstream/develop
  5. 推送本地到远程仓库(自己fork的仓库)

    1
    git push 

更改远程仓库地址

对于原本就是clone的repo,直接添加链接会报错,需要加一句git remote rm orgin

1
2
3
4
5
6
7
cd existing_folder
git init
git remote rm origin
git remote add origin https://xxx.git
git add .
git commit -m "init"
git push -u origin master

提PR

  1. fork repo A/code 到自己的 GitHub,称之为 B/code
  2. clone B/code 到本地
  3. 增加 A/code 作为本地的远程 upstream:
    1
    git remote add upstream https://github.com/A/code.git
  4. 新建工作分支
    1
    git  checkout -b my-dev
  5. 进行 add,commit,push 到自己的远程分支 B/code
    1
    git push --set-upstream origin my-dev
  6. 在 GitHub 上发起 Pull Request,会有分支选择

这里不清楚为什么要添加 upstream 根本没用到,可能为了之后拉代码方便

让.gitignore生效

1
git rm -r --cached .