Git Manual
Published:
This blog details some common git commands I used.
1. SSH公钥
1.1. 为什么要上传SSH公钥?
你的git客户端可通过SSH协议访问git仓库托管网站,将你本地的SSH公钥上传到git仓库托管网站之后,每次执行git push/fetch自动使用SSH密钥认证,而SSH Keys配置不当访问远端代码库会报错。
1.2. 如何产生SSH公钥
在Linux或Mac OS终端或Windows Git Bash, 执行ssh-keygen
命令生成SSH公钥和私钥
ssh-keygen -t rsa
填写SSH密钥存放目录, 或直接回车存在在默认位置:
$HOME/.ssh/
输入SSH密钥的使用密码并记住,每次下载和上传时会用到此密码;或直接回车不设置密码。
1.3. 如何上传公钥
查看并完整复制的SSH公钥
cat ~/.ssh/id_rsa.pub
在github等代码托管网站个人SSH设置中,完整粘贴到填写框中,添加保存即可。
2. Git global setup
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
3. Create a new repository
3.1. Clone from the origin
git clone ssh://xxx.git
cd YourProj
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
3.2. Existing folder
cd existing_folder
git init
git remote add origin ssh://xxx.git
git add .
git commit -m "Initial commit"
git push -u origin master
3.3. Existing git repository
cd existing_repo
git remote add origin ssh://xxx.git
git push -u origin --all
git push -u origin --tags
4. Git branch
master 默认开发分支
origin 默认远程版本库
HEAD 默认开发分支
HEAD^ HEAD的父提交
5. 修改和提交
git status #查看状态
git difftool . #查看变更内容,需要先安装比较软件,如meld
git add . #将所有改动过的文件放入暂存区
git add <file> #跟踪指定的文件
git mv <old> <new> #文件改名
git rm <file> #删除文件
git rm --cached <file> #停止跟踪文件但不删除
git commit -m "commit message" #提交所有更新过的文件
git commit --amend #修改最后一次提交
git clean -df #删除当前目录下没有被track过的文件和文件夹
6. 查看提交历史
git log #查看提交历史
git log -p <file> #查看指定文件的提交历史
git blame <file> #以列表方式查看指定文件的提交历史
7. 撤销
git restore . #撤销工作目录中所有未暂存的修改内容
git restore --staged . #将工作目录中所有已暂存的修改内容撤销到未暂存状态
git reset --hard HEAD #撤销工作目录中所有未提交文件的修改内容
git checkout HEAD <file> #撤销指定的未提交文件的修改内容
git revert <commit> #撤销指定的提交
8. 分支与标签
git branch #显示所有本地分支
git checkout <branch/tag> #切换到指定分支或标签
git branch <new-branch> #创建新分支
git branch -d <branch> #删除本地分支
git tag #列出所有本地标签
git tag <tagname> #基于最新提交创建标签
git tag -d <tagname> #删除标签
9. 合并与衍合
git merge <branch> #合并指定分支到当前分支
git rebase <branch> #衍合指定分支到当前分支
git pull --rebase #将本地分支修改衍合到远端分支
10. 远程操作
git remote -v #查看远程版本库信息
git remote show <remote> #查看指定远程版本库信息
git remote add <remote> <url> #添加远程版本库
git fetch <remote> #从远程库获取代码
git pull <remote> <branch> #下载代码及快速合并
git push <remote> <branch> #上传代码及快速合并
git push <remote>:<branch/tag-name> #删除远程分支或标签
git push --tags #上传所有标签