Skip to content

git 指令汇总

基本上算是揉成一团了,只能 ctrl + f 来查。

比较实用的git指令

bash
# 配置用户名和邮箱
git config --global user.name
git config --global user.email "email@example.com".

# 为git命令配置别名 //提高效率ing
git config --global alias.a add .
git config --global alias.c commit
git config --global alias.s status

# 创建新仓库/克隆旧仓库
git init .
git clone 

# 常见操作
git add 
git status
git commit -m

# 使用gitignore忽略文件

# 从版本库中删除
git rm  # 相当于本地删除+add推送了
git rm --cached # 相当于本地删除+add推送了,之后本地又新建了一个,也就是说本地没有被删除,但是版本库里没有了。

# 从版本库中改名 
# 学这个命令只要是因为有的时候直接使用mv对文件进行大小写改名不会让版本库中名字发生变化,算是一种bug
git mv a b # 文件a改名为b,相当于在本地改了一下名字+add推送了

# log日志 
# GUI更方便的,命令行太眼花了 难看
git log
git log -p # 显示具体的文件变动信息
git log -1 # 显示最近一次的提交
git log --oneline # 显示最简要的日志
git log --name-only # 显示出哪些文件发生变化
git log --name-status # 更详细,还显示出了文件发生了什么变化

# amend并入最近的一次提交 
# 它可以让你合并你的add到上一次commit, 而不是提交一个新的快照。如果没有add需要提交,那它效果上等效于用来修正上一次的commit描述。
git commit --amend

# 关于回退的操作
git rm --cached,它删除版本库中的修改并不影响本地(上面详细介绍了),在效果上就等于回退到从前了。
git reset HEAD xxx # reset 的默认行为是 --mixed, 即绿色 -> 红色 取消暂存的文件, 暂存的绿色文件回退到工作目录

git branch -vv # vv 是 very verbose 的缩写 能够显示分支的上游分支
git push --set-upstream origin your_branch:upstream_branch # 在 push 的时候设置上游
git push -u origin your_branch:upstream_branch # 同上
git branch -u origin/upstream_branch your_branch # -u 是指定上游分支的意思
git branch -d # 删除分支

git stash -u # 默认不会暂存未追踪的文件,加上 -u 会加上,很有用
git stash apply --index # 暂存的暂存区文件在 apply 时默认不会自动重新加入暂存区(变绿),加上 index 将会尝试重新加入缓存区

比较基础的指令

bash
# 常见操作
git init (--bare .git)
git remote add origin <server> # 连接远程仓库,origin是远程仓库别名
git clone # 克隆远程仓库,自动连接(执行上面的remote)
git config (--global) # 配置.git/config文件

git status
git add 
git commit -m "代码提交信息"
git push origin master # 将当前分支push到远程master分支
git log --oneline # 显示提交的历史信息。支持很多参数用于过滤

# 同步相关
git remote # 远程连接
git remote rm <name> # 移除远程连接
git fetch <remote> <branch> # 拉取远程仓库(分支)到本地
git branch -r # 查看远程分支
git merge <branch> <branch> # 合并分支。两个不同历史记录的分支(即它们不属于同一来源)默认不允许合并。
--allow-unrelated-histories # 强制合并,忽略不同来源的问题。这时两个分支的历史记录将叠加。
git pull <remote> # git fetch + git merge。

# 回滚代码
git checkout <commit> # 查看之前的提交。可以将提交的哈希字串,或是标签作为 <commit> 参数。
git checkout <commit> <file> # 替换文件为之前的版本。它将<file>文件真替换,并将它加入缓存区。
git checkout --orphan <new_branch> # 根据当前分支新建分支,并且不继承之前所有的历史记录。(需要commit一次才能真正创建)
git revert <commit> #  回退,回到<commit> *之前* 的状态,默认产生一条新的commit记录用于记录这次回退。
git revert HEAD^/HEAD~1 # 撤销前前一次 commit ,回到 前前一次 commit 之前的状态。
git revert <commit> # 回退版本
git reset <file> # 从缓存区移除特定文件,但不改变工作目录。它会取消这个文件的缓存,而不覆盖任何更改。
git reset # 重设缓冲区,匹配最近的一次提交。
git reset --hard # 重设缓冲区+工作目录,匹配最近的一次提交。(很危险)
git reset <commit> # 回滚到之前某个commit。删除中间所有的commit。

----------------------------------------------

# 分支相关
git branch # 列出所有分支
git branch <branch> # 新建分支,不会自动切换到那个分支上去。
git branch -d <branch> # 删除分支。这是一个安全的操作,Git 会阻止你删除包含未合并更改的分支。
git branch -D <branch> # 强制删除。
git branch -m <branch> # 将当前分支命名为 <branch>。
git checkout <existing-branch> # 查看特定分支,分支应该已经通过 git branch 创建。
git checkout -b <new-branch> # 创建并查看 <new-branch> (如果不存在)

# 合并分支
git merge <branch> # 将指定分支并入当前分支。
git merge --no-ff <branch> # 将指定分支并入当前分支,但生成一个合并提交(即使是快速向前合并)。

后续补充

bash
远程连接
git clone # 执行这条指令所在的仓库会远程连接仓库,并将远程仓库克隆到本地。(默认会为这个远程仓库搞个标识,叫做origin,省的每次都要敲一长串url来与远程交互)
git remote add origin <server> # 连接远程仓库,origin是远程仓库别名,不成规的约定就是取为origin。

远程分支管理
git branch -a //显示分支(包括远程分支)
git push //分支推送 注意:git仓库关联之后,还不能进行推送(因为推送是以分支作为单位的),把想要推送的分支和远程仓库中的某一个分支相关联,之后才能推送。
git push --set-upstream origin xxx // 将当前分支和远程origin的某个xxx分支相关联,然后把当前分支版本库同步到远程origin的xxx分支版本库。