Skip to content

Instantly share code, notes, and snippets.

@huanguolin
Last active April 9, 2019 04:28
Show Gist options
  • Save huanguolin/fa93dc5fdddd355bb06cbd00e12d26ee to your computer and use it in GitHub Desktop.
Save huanguolin/fa93dc5fdddd355bb06cbd00e12d26ee to your computer and use it in GitHub Desktop.
git basic cmd

git 常用命令

  • 查看状态

可以看到当前分支名,分支中是否有未提交的文件,stage 的文件等。

git status
  • 提交代码
git add xxx # xxx 可以是目录,或者文件,这一步是 stage 文件
git commit -m "commit message"

# 或者一步完成, 注意这将把所有更改全部提交
git commit -am "commit message"

# 想把这次提交和上一次提交合并
git commit --amend
  • 放弃提交、更改、暂存文件
# 放弃某些提交,这个会留下被放弃的 commit 记录
git revert <commit-hash-id1> <commit-hash-id2> 
# !!!危险,谨慎操作!!!, 放弃某次提交后面所有的提交,这个没有被放弃的 commit 记录
git reset --hard <commit-hash-id> # 或者回滚最后三次提交 git reset --hard HEAD~3 
# 放弃 stage 文件 (xxx 可以是目录,或者文件)
git reset xxx
# 放弃已追踪文件改动 (xxx 可以是目录,或者文件)
git checkout xxx # 或者 git reset --hard 这个非常危险,会把所有已追踪文件还原到上次提交的状态(即 HEAD)
# 清除未追踪文件
git clean -f # 如果只清楚某个文件 git clean -f xxx-file
# 清楚未追踪文件和目录
git clean -fd 
  • 切换分支
git checkout branch-name-you-want-go
  • 新建分支

举例: 从分支 branch-a 创建出一个分支叫 branch-b:

方式一:

git checkout branch-a
git checkout -b branch-b 

方式二:

git branch branch-a branch-b
git checkout branch-a 
  • 列出所有分支
git branch -a 
  • 从远端拉取分支更新
git fetch 
# 同步远端分支数量(把远端删除的分支反映出来)
git fetch --prune 
# 附带 tag 信息
git fetch --tags
  • 合并分支

举例: 把分支 branch-a 合并到分支 branch-b:

git checkout branch-b 
git merge branch-a
# 如果合并不要 fast forward
git merge branch-a --no-ff
# 如果合并要把提交压合成一个
git merge branch-a --squash
# 如果要把 `branch-a` 作为基础来合并(即'branch-b'相对于'branch-a'的差异放在'branch-a'提交历史后面,不再按照提交时间合并)
git rebase branch-a
  • 把远端的分支直接合并到本地开发的分支

举例: 把远端的分支 branch-a 合并到本地的分支 branch-a:

git checkout branch-a 
git pull branch-a
# 等同于:
git fetch branch-a
git merge branch-a
  • 把本地已提交的修改推送到远端

举例: 把本地的分支 branch-a 合并到远端的分支 branch-a:

git push orgin branch-a
# 或者设置了 up-stream 后直接
git push 
  • 隐藏当前的工作

如果突然有任务插入,又不想提交当前未完成的改动,可以隐藏起来,等完成紧急的任务后,再回到原来的分支,将其弹出

# 隐藏改动
git stash "stash messgae"
# 查看隐藏的改动列表
git stash list
# 弹出隐藏改动到当前分支
git stash pop 
  • 把另一个分支中的 commit 合并到当前分支
git cherry-pick <commit id>
  • 查看提交 log
git log
  • 查看操作 log

可以看到自己在仓库中做了哪些操作,这个就是“后悔药”

git reflog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment