入门
-
git init
初始化一个版本仓库 -
git remove add origin git@g.com:/try_git.git
增加一个github上的远端仓库 -
git status
git仓库的当前状态 git add ‘*.txt’
注意: 通配符 .txt 外面引号,如果没有引号,则命令会被shell先解析,即.txt的内容变成了当前目录下的所有txt文件,而忽略子目录中的所有txt文件,而‘*.txt’则会将通配符交给git来处理,在git内部完成 所有文件夹中txt文件搜索。
-
git commit -m 'xxx'
向版本库提交一个改动版本 ,‘xxx’是类似于该版本的注释。 -
git commit --amend
修改以前的提交 -
git pull -u origin master
从origin[github远端] 拉版本到本地的master 分支
提高
-
git reset filename
将Statge(git add后commit前)状态转为modified状态 git checkout --filename
注意: git checkout 只能将处于modifed状态的文件revert到之前的末修改前的状态,而如果一个文件的已经git add进入了staged状态,则checkout对其没有效果。
-
git clone git@g.com
克隆git远程仓库下的文件 -
git tag <new tag>
标识提交记录,之后可以通过用checked跳到该状态 -
git checkout <file name>
快速丢弃所有的变更,在没有添加(add)之前 -
git remote
查看远程仓库 -
git remote -v
查看远程仓库和远程仓库的url -
git blame <filename>
查找某行代码的最后的修改者
git diff
查看变化
-
git diff
查看有什么变化 -
git diff HEAD
查看pull下来新版本里有哪些变化 -
git diff --staged
查看Stage(add后commit前)的变化 -
git diff --cached
查看哪些文件将被提交
git log
历史记录
-
git log
查看历史记录 -
git log --oneline
只查看当前分支的提交信息(commit message),不显示其它(比如提交时间、提交Author等) -
git log <branch> --oneline
只查看指定的分支(branch)的提交信息(commit message)
git rm
移除文件及文件夹
-
git rm <file name>
删除connit提交后文件,执行这条命令后,本地的文件也一并删除了 -
git rm --cached <file name>
移除不需要提交的文件,add后是直接移除;commit后的需要再一次commit才能移除,不然依旧提交第一次commit后的结果
git mv
文件重命名
-
git mv <old file name> <new file name>
修改文件名,需要commit和push,远程仓库的文件才会重命名
git stash
对修改内容的保存,而不是提交
-
git stash
当前工作区内容已被修改,但是并未完成。你需要保存它,而不是提交(commit)它,此时需要stash -
git stash pop
恢复stash后的内容
git rebase
-
git rebase --continue
在rebase的过程中,出现冲突时,git会停止rebase并让你解决冲突,待解决完冲突后,无需commit,只需要git rebase --continue继续执行apply余下的补丁 -
git rebase --abort
停止rebase的行动,并且分支回到rebase开始的状态 -
git rebase -i HEAD~2
修改第二次提交的commit message ,将‘pick’改为‘r’ - `git rebase -i HEAD~4 对 commit 历史进行修改合并,把多个 commit 合并成一个,例如:将最后三个 commit 都合并到第二个 commit - Adding README,将‘pick’改为‘s’
-
git rebase -i HEAD~2
提交顺序错乱时,使用 git rebase -i 进行调整, 将错误的顺序换成正确的位置,即修改 pick的代码行进行交换
其它
- 编辑.gitignore :除了lib.a外,忽略文件.a(*.a \n !lib.a)
-
git repack -d
优化资源库(很少用到) -
git grep "TODO"
为了不影响当前正在做的事情,会把一些不那么紧急的任务使用 TODO 注释在代码里,现代的 IDE 都能帮我们识别这些注释并在一个单独的窗口中罗列出来 -
git bisect start HEAD <Hash>
Hash是第一次commit的代码 git bisect run make test
-
git bisect reset
退出the bisect session -
git revert <Hash>
有时代码 push 到远程仓库后发现某一块代码有问题,可以通过 revert 命令将特定 commit 完全恢复 -
git cherry-pick <Hash>
把最新的一次提交给毫无保留的扔掉, 又后悔了,可以通过reflog获得它提交的代号(即)然后在通过该命令找回提交,(如果该提交删除或添加了某些文件,这些文件将不会被找回)该命令只是找回了提交的记录 -
git log <branch1> -p <fileName>
->git cherry-pick <Hash>
从branch1摘下某次commit,合并到当前分支(不是branch1分支)