Git Manual

1 minute read

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    #上传所有标签