You are on page 1of 6

Git 基础命令

$ git clone git@codeup.aliyun.com:mathits/mathits/its-service.git --克隆仓库,本地仓库名 its-

service,默认生成 master 分支

$ git clone git@codeup.aliyun.com:mathits/mathits/its-service.git its --克隆仓库,本地仓库名 its 默

认生成 master 分支

$ git clone git@codeup.aliyun.com:mathits/mathits/its-service.git -o booyah --克隆仓库,将

远程仓库命名为 booyah,而不是 origin

$ git add file --将 file 文件添入暂存区

$ git status –short --状态简览

.gitignore 文件 --记录要忽略的文件模式

规范:

1. 所有空行或者以 #开头的行都会被 Git 忽略

2. 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中; 所谓的 glob 模式是

指 shell 所使用的简化了的正则表达式

3. 匹配模式可以以(/)开头防止递归

4. 匹配模式可以以(/)结尾指定目录。

5. 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反

.gitignore 文件实例

# 忽略所有的 .a 文件
*.a

# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a

# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO


/TODO

# 忽略任何目录下名为 build 的文件夹


build/

# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件


doc/**/*.pdf

$ git diff --查看工作区文件更新的部分,实质:index 区与 work-tree 区比较修改文件的

差异

$ git diff –staged --查看暂存区文件更新的部分,实质:index 区与 commit 区比较修改文件

的差异

$ git rm file --删除已跟踪的文件

$ git rm –cached file --将 file 文件转为不跟踪文件

$ git commit –amend --用新的提交代替上一次提交

$ git cat-file -p HEAD --查看 HEAD 的实际目录列表

$ git ls-tree -r HEAD --查看树对象的具体内容

$ git reset –soft HEAD~ --仅移动 HEAD 指针,改变引用分支指向的提交,实质撤销了上一次

git commit 命令,回滚 git commit 命令。

$ git reset HEAD~ --等价于下一条指令

$ git reset –mixed HEAD~ --撤销一上次提交,但还会取消暂存所有的已修改文件,于是,

我们回滚到了所有 git add 和 git commit 的命令执行之前。

$ git reset –hard HEAD~ --撤销了最后的提交、git add 和 git commit 命令 以及 工作目录中

的所有工作,即撤销所有的修改。

$ git reset file.txt --将 HEAD 区的 file.txt 文件复制到索引区


$ git reset eb43bf file.txt --将 eb43bf 提交对象中的 file.txt 文件复制到索引区,然后执行 git

commit 就可以恢复到 eb43bf 提交对象中的 file.txt 文件

# 重写提交历史

$ git reset –soft HEAD~n --将 HEAD 移动到第 n 次前的提交

$ git commit --创建新的提交

$ git checkout – file.txt --抛弃本次 file 文件的修改,还原成上次提交的样子

$ git fetch origin --从远程仓库 origin 拉取数据

$ git push origin --向远程仓库 origin 推送数据

$ git remote show origin --查看远程仓库 origin 的详细信息

$ git remote rename origin its-service --远程仓库的重命名

$ git remote remove origin --移除远程仓库

$ git tag -l --查看所有标签

$ git tag -l 'v1.*' --查看 v1.开头的标签

$ git tag -a v1.2 -m “my version v1.2” --创建注解标签 v1.2

$ git tag v1.3 --创建轻量级标签

$ git push origin –tags --将标签推送到远程仓库

$ git tag -d v1.2 --删除本地标签

$ git push origin :refs/tags/v1.2 --删除远程仓库的标签

$ git config –global alias.co checkout --给 checkout 别名 co

$ git config –global alias.unstage ‘reset HEAD –‘ --取消暂存文件命令取别名

$ git unstage file.txt 等价于 git reset HEAD – file.txt –取消暂存文件 file.txt

$ git config --global alias.last 'log -1 HEAD' --轻松地看到最后一次提交


$ git fsck –full --检查仓库,显示所有未引用的提交

$ git gc --prune=now --立即删除 dangling 的引用

$ git log –oneline –decorate –graph –all --图形化显示提交历史,展示各分支之间的关联

$ git branch -d issure --删除本地分支

$ git branch -v --查看每个分支的最后一次提交

$ git branch –merged --显示已合并到当前所在分支的分支

$ git branch –no-merged --显示未合并到当前所在分支的分支

$ git checkout -b test orinin/test --本地创建分支 test 追踪远程分支,并切换到 test 分支

$ git checkout –track orinin/test --上一条命令的快捷方式

$ git checkout test --若存在远程分支 test,则该命令是上一条命令的最快捷方式,若不

存在,则只会在本第创建分支 test,并切换到 test 分支

$ git branch -u origin/test --让当前所在分支跟踪远程分支 test

$ git branch -vv --查看本地分支的详细信息

注意若想获得最新的数据,则需先拉取服务器的数据,然后在显示本地分支的详细信息
$ git fetch –all $ git branch -vv

$ git rebase –onto master server client --取出 client 分支,找出它从 server 分支分歧之后的

补丁, 然后把这些补丁在 master 分支上重放一遍,让 client 看起来像直接基于 master 修改一

$ git show 61c6 --查看提交对象 61c6 的详细信息

$ git log --abbrev-commit --oneline --查看提交对象 61c6 的简要信息

$ git reflog --查看引用日志

$ git show HEAD@{n} --查看 HEAD 前第 n 次指向的提交信息


$ git log --pretty=format:'%h %s' –graph --图形化显示提交历史

$ git show HEAD^ --显示 HEAD 的父提交信息

$ git log master..test --输出(master,test)区间的提交记录,即包含在 test 中但不在

master 中的提交

$ git log refA refB --not refC --查看所有被 refA 或 refB 包含的但是不被 refC 包含的提交

$ git log –left-right master…test --查看 master 或者 test 中包含,但不是两者共有

的提交,输出中会显示哪些提交属于 master,哪些属于 test

$ git stash push “temp stash” --将目前工作区和暂存区的改动贮藏到栈上

$ git stash list --查看贮藏的历史记录

$git stash apply ‘stash@{1}’ --应用具体的贮藏

$git stash pop --将贮藏从栈上移除

$ git stash --keep-index --它告诉 Git 不仅要贮藏所有已暂存的内容,同时还要将它们保

留在索引中

$ git stash –patch --Git 不会贮藏所有修改过的任何东西, 但是会交互式地提示哪些改

动想要贮藏、哪些改动需要保存在工作目录中

$ git stash branch testchanges --可以运行 git stash branch <new branchname> 以你指定的分支

名创建一个新分支,检出贮藏工作时所在的提交,重新在那应用工作,然后在应用成功后丢

弃贮藏

$ git clean -d -n --如果只是想要看看它会做什么,可以使用 --dry-run 或 -n 选项来运行命

令, 这意味着“做一次演习然后告诉你 将要 移除什么”

$ git clean -n -d -x --默认情况下,git clean 命令只会移除没有忽略的未跟踪文件。 任何

与 .gitignore 或其他忽略文件中的模式匹配的文件都不会被移除。 如果你也想要移除那些文件,


例如为了做一次完全干净的构建而移除所有由构建生成的 .o 文件, 可以给 clean 命令增加一

个 -x 选项。

You might also like