在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 |
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已删除的文件。