Git命令清单
总是查总是忘,查别人的博客还不如查自己的,自力更生。
远程仓库
添加远程仓库
git remote add origin [url] //经常使用版本
git remote add <shortname> <url> //格式
这里的 shortname 之后就代表了这个仓库链接
查看远程仓库
git remote
返回结果 origin
,如果我还需要详细的地址的话,再加一个 -v
git remote -v
从远程仓库中拉取
git fetch [remote-name] //只是拉取
git pull //还会自动合并
git pull origin master //注意这条命令会直接把本地覆盖了,导致删库事件
该怎么恢复呢?
git reflog show //查看本地的操作记录
git reset HEAD@{2} //找到我想恢复的那一条 reset
会输出:
Unstaged changes after reset:
D XXX
M README.md
文件夹依然什么都没有
git add .
git reset --hard
输出结果:
HEAD is now at [commit XXXX]
现在什么都恢复了
提交到远程仓库
git push -u origin master //想要强行提交完全不一致的内容 用-f
git push [remote-name] [branch-name] //格式
查看远程仓库信息
git remote show [remote-name]
重命名远程仓库
git remote rename [原来] [修改后]
移除远程仓库
git remote rm origin
如果执行 git remote rm origin 报错的话,我们可以手动修改gitconfig
文件的内容
vi .git/config
把 [remote “origin”]
那一行删掉就好了。
强制覆盖本地文件(与git远程仓库保持一致)
git fetch --all
git reset --hard origin/master
git pull
变成单条执行
git fetch --all && git reset --hard origin/master && git pull
和远程仓库内容合并
How to merge remote master to local branch?
git fetch
git rebase origin/master
删除文件
如何删除git所有记录
rm -rf .git
如何删除已上传的文件和文件夹
git rm -r --cached app
删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制
git pull origin master
VS git pull origin/master
git pull origin master
will pull changes from the origin remote, master branch and merge them to the local checked-out branch.
git pull origin/master
will pull changes from the locally stored branch origin/master and merge that to the local checked-out branch. The origin/master branch is essentially a “cached copy” of what was last pulled from origin, which is why it’s called a remote branch in git parlance. This might be somewhat confusing.
You can see what branches are available with git branch and git branch -r to see the “remote branches”.
其它
fork仓库更新
如何将fork别人的仓库中的代码更新至最新版本? 摘自链接
git remote add upstream git@github.com:xxx/xxx.git
git fetch upstream
git merge upstream/master
git push
submodule使用
git submodule add <submodule_url> # 添加子项目
git submodule init # 初始化本地.gitmodules文件
git submodule update # 同步远端submodule源码
git clone --recurse-submodules <main_project_url> # 获取主项目和所有子项目源码
git fetch # 获取submodule远端源码
git merge origin/<branch_name> # 合并submodule远端源码
git pull # 获取submodule远端源码合并到当前分支
git checkout <branch_name> # 切换submodule的branch
git commit -am "change_summary" # 提交submodule的commit
# or
# 更新submodule源码,默认更新的branch是master,如果要修改branch,在.gitmodule中设置
git submodule update --remote <submodule_name>
# 更新所有submodule源码,默认更新.gitmodule中设置的跟踪分支,未设置则跟踪master
git submodule update --remote
# 当submodule commits提交有问题的时候放弃整个push
git push --recurse-submodules=check
# 分开提交submodule和main project
git push --recurse-submodules=on-demand
有关博客主题子模块更新的流程
cd themes/even
git add *
git commit -m "XXX"
cd ../..
git add themes/even
git commit -m "XXX"
git push --recurse-submodules=on-demand
ChangeLog
之前记录的就算了
2019-11-24 今天我用了git pull origin master
结果删库了,太可怕了,写一下怎么恢复;补充了和远程仓库合并的正确做法
2019-12-08 git pull origin master
VS git pull origin/master