关于github上的pull request

在GitHub网站上找到感兴趣的仓库,仓库网页右上角点击fork,把这个仓库从别人那克隆一份到自己的账号上,注意这一步只是服务端代码仓库的克隆。fork之后可以在自己账号的仓库里看到一个同名的代码仓库。

在本地命令行执行git clone,这里填入的路径是自己账号上的仓库。

本地修改之后,执行git commit和git push,把修改推送到自己的仓库上。

在GitHub网站上,定位到自己提交的那次commit,执行pull request,填入说明,等待原仓库作者的合并。

原仓库作者合并后,自己的仓库会落后原仓库一次提交,这里可以用git add remote把原仓库也添加到本地,例如:

git remote add xavier-cai  git@github.com:xavier-cai/vscode-leetcode-cpp-debug.git


注意这里add时要指定一个远程仓库的名称,并且不能是origin,因为origin是首次git clone时自己的远程仓库对于的名称。

上一步git add remote之后本地仓库有两个对应的远程仓库,分别是origin和xavier-cai:

# git remote -v
origin   git@github.com:zhongluqiang/vscode-leetcode-cpp-debug.git  (fetch)
origin   git@github.com:zhongluqiang/vscode-leetcode-cpp-debug.git (push)
xavier-cai       git@github.com:xavier-cai/vscode-leetcode-cpp-debug.git (fetch)
xavier-cai       git@github.com:xavier-cai/vscode-leetcode-cpp-debug.git (push)


执行git pull,从xavier-cai上拉取修改:

git pull xavier-cai master


把修改之后的代码推送到自己的远程仓库上,就可以保持自己的远程仓库与原作者的远程仓库版本一致的了:

git push origin master

解决fork的仓库无法设置为私有仓库问题

GitHub不允许将fork的仓库改为私有仓库,对此GitHub提供的解决办法是将fork的仓库完全复制一份到自己的新创建的仓库,这个自己新创建的仓库可以是私有的。

相关的命令如下:
先在GitHub的网站上创建一个新的仓库,根据需要将新仓库设置成是否可见。

本地命令行先git clone已fork的项目,记得带上--bare参数,如下:

git clone --bare git@github.com:zhongluqiang/co.git


然后执行git push命令,带上--mirror参数,如下:

git push --mirror git@github.com:zhongluqiang/private-co.git


这样就将fork的仓库完全复制成了自己的仓库,这个仓库可以随意修改可见性,并且保留了和原来仓库完全相同的提交记录。

自动stage已跟踪的所有文件,git add -u 或者git add -u .  后者会只stage当前目录。

git ls-files --deleted -z | xargs -0 git rm


这条语句会只stage已删除的文件。


  • 无标签