nebulali 2020-06-10
学而时习之,不亦说乎
sudo apt-get install git
git config --global user.name "Your Name" git config --global user.email ""
git init
git init [project-name]
# 添加所有 git add . # 添加指定文件 git add xx/xx/xx
# 提交暂存区到仓库区 git commit -m "描述(方便日后查看回忆此次提交内容)" # 提交时显示所有diff信息 git commit -v # 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 git commit --amend -m [message]
- 查看分支:
git branch
- 创建分支:
git branch <name>
- 切换分支:
git checkout <name>
- 创建+切换分支:
git checkout -b <name>
- 合并某分支到当前分支:
git merge <name>
- 删除分支:
git branch -d <name>
git checkout -b xxx
git branch -a
git checkout xxx
# 把dev分支的工作成果合并到master分支上 git merge dev
git branch -d xxx
git push origin --delete xxx
git status
git log
git log --stat
git log -S [keyword]
git shortlog -sn
git blame [file]
git diff
git diff --cached [file]
git diff HEAD
git diff [first-branch]...[second-branch]
git diff --shortstat "@{0 day ago}"
git show [commit]
git show --name-only [commit]
git show [commit]:[filename]
git reflog
git remote
在每一个名字后面列出其远程url,此时, -v 选项(译注:此为 –verbose 的简写,取首字母),显示对应的克隆地址。
git remote -v | --verbose
git remote add [shortname] [url]
git remote add dev git://github.com/CnPeng/test.git ,这样,就可以用字符串 dev 来代指该仓库地址。在使用 git remote -v 查看仓库列表的时候,就会有一个 dev 的仓库列表。
git remote show [shortname]
git remote rename [old-name] [new-name]
git remote rm [shortname]
git push [remote] [branch]
git push [remote] --force
git push [remote] --all
git pull <远程主机名> <远程分支名>:<本地分支名> # 取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。 git pull origin next:master # 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。 git pull origin next # 上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。 git fetch origin git merge origin/next
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。
# 指定master分支追踪origin/next分支。 git branch --set-upstream master origin/next # 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名 git pull origin
git stash
git stash list
# 恢复后,stash内容并不删除 git stash apply # 删除 git stash drop # 恢复的同时把 stash 存储列表的内容也删了 git stash pop
如果有一个分支上多个 stash,如果需要恢复指定的 stash ,可以在命令尾部加id,如
$ git stash apply {0}
,同样删除指定 stash 项目则执行如$ git stash drop {1}
git tag
git tag -a v1.4 -m "my version 1.4" git show
git tag v1.4-lw
git reflog git tag -a v1.2 9fceb02
默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库
# 推送一个标签 git push origin v1.5 # 推送所有本地新增的标签上去(检出标签) git push origin --tags
git checkout v0.0.1
# 删除本地指定标签 git tag -d v0.0.1 # 删除远程标签 git push origin -d tag <tagname>
# 中文乱码 git config --global core.quotepath false
相关参考:
https://git.apachecn.org/
https://www.liaoxuefeng.com/wiki/896043488029600