init
git init 创建
clone
git clone git@server-name:path/repo-name.git 克隆远程仓库到本地当前目录下
git clone --depth=1 <repository> <directory> clone远程仓库到本地directory目录下 --depth=1:深度为1
git clone -b <remote-branch> --depth=1 <repository> clone指定远程分支到本地当前目录下
pull
git pull <remote-name> <remote-branch>:<local-branch> 将远程仓库分支中的更改合到本地分支中
git pull <remote-name> <remote-branch> 与当前分支合
git pull --rebase <remote-name> <remote-branch>:<local-branch> 合并需要采用rebase模式
git pull origin master --allow-unrelated-histories 第一次从远程拉取更新
push
git push <remote-name> <local-branch>:<remote-branch> 推送本地分支到远程分支上
git push origin master 将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。
git push <remote-name> :<remote-branch> 删除远程分支
git push origin :master 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
git push -u origin master 如果当前分支与多个主机存在追踪关系,则可以使用 -u 选项指定一个默认主机,这样后面就可以不加任何参数使用 git push 。
git push origin <tag-name> 推送标签
git push origin --tags 一次推送本地全部标签
git push origin :<tag-name> 删除远程标签
git push origin :refs/tags/<tag-name> 删除一个远程标签(先把本地的删除 git tag -d <tag-name>)
checkout
git checkout -b <local-branch> <remote-name>/<remote-branch> 跟踪远程分支
git checkout <branch> 切换分支
git checkout -b <branch> -b 创建并切换分支
git checkout -- <file> 撤销工作区的全部修改,是文件回到最近一次 git commit 或 git add 时的状态。
branch
git branch ([-r | -a]) 查看本地分支 -r:查看远程分支 -a:查看全部分支
git branch <name> 创建分支
git branch -d <name> 删除本地分支
git branch -D <name> 强行删除一个没有合并过的分支
git branch --set-upstream <local-branch> <remote-name>/<remote-branch> 创建本地分支和远程分支的链接关系
merge
git merge <branch> 合并指定分支<branch>到当前分支
git merge --no-ff -m 'message' <branch> 合并分支,禁用Fast forward模式,创建一个新的commit。
tag
git tag 查看标签
git tag <tag-name> (<commit-id>) 创建标签(指定一个commit-id)
git tag -a <tag-name> <commit-id> 后期加注标签
git tag -a <tag-name> -m 'message' 指定标签信息
git tag -s <tag-name> -m 'message' 用PGP签名标签
git tag -d <tag-name> 删除标签
git show <tag-name> 查看标签信息
stash
git stash 保存当前工作现场
git stash list 查看保存的工作现场
git stash apply 恢复工作现场,stash 内容并不删除,用 git stash drop 来删除
git stash apply stash@{0} 恢复指定的 stash
git stash pop 恢复的同时把 stash 内容也删了
reset
HEAD: 指的是当前分支最末梢最新的一个提交,也就是版本库中该分支上的最新版本。
HEAD^: 指向 HEAD 之前最近的一次提交。
ORIG_HEAD: 执行 git reset 命令时,git 会把老的 HEAD 拷贝到文件 .git/ORIG_HEAD 中,在命令中可以使用 ORIG_HEAD 引用这个提交。
执行 git pull 和 git merge 操作时,git 都会把执行操作前的 HEAD 放入 ORIG_HEAD 中,以防回滚操作。
git reset | git reset HEAD <file> 暂存区 -> 工作区
git reset --hard HEAD^(commit) 退回上一个(或指定的commit)版本
git reset --hard HEAD 清除工作区和暂存区
git reset --soft HEAD^ 回到暂存区状态,工作区还跟 reset 之前一样,不作任何改变。
git reset --merge ORIG_HEAD 避免在回滚时清除工作区
如果还没 git add <file>, 使用该指令进行撤销: git checkout -- <file> 清除工作区
git tag start
git reset --keep start(commit) 保留工作区并丢弃一些之前的提交,把在 start(commit) 之后的提交清除掉,但是保持工作区不变。
revert
git revert 撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交。
git revert HEAD 撤消了上次提交
git revert HEAD^ 撤消上上次(next-to-last)的提交
commit
git commit -m "message" 提交到当前分支
git commit --amend 改写提交 --amend: 修改刚才的这个提交 (HEAD commit)。
other
git add 添加到暂存区
git status 查看状态
git log 查看提交记录
git reflog 查看操作记录
git diff 查看不同
git rm <file> 删除文件
git remote (-v) 查看远程仓库(-v: 显示详细信息)
git remote add origin git@server-name:path/repo-name.git 添加远程仓库
git log --graph (--pretty=oneline --abbrev-commit) 查看分支合并图
git check-ignore -v <file> 找出 .gitignore 文件里哪个规则忽略了该文件
git config —global alias.st status 配置别名 git st == git status
git rebase -i 会提示你在编辑中做相关的修改,这样其实就是让你在rebase的过程来修改提交。
网友评论