git commit
git commit -s
提交的信息中带有signed-off-by: <user.name> <user.email>信息
git log
git log --stat
显示当前commit在上一次commit基础上修改了哪些文件及行数等信息。
git log -p
显示当前commit在上一次commit基础上修改的文件的内容
git log --pretty=oneline filename
查看文件所有改动历史
git show commit_number
查看某次提交的修改
git diff
git diff commitA commitB 显示commitA需要做哪些修改才能到commitB
git diff commitA HEAD filename 查看两次commit之间的某个文件的修改
git diff --stat commitA commitB 查看两次提交之间有哪些文件差异
git diff HEAD~ --stat 查看HEAD与前一次commit之间有哪些文件差异
git diff HEAD~ filename 查看HEAD与前一次commit之间filename文件的差异
git stash
git stash 放进暂存区
git stash list 列出暂存区的文件
git stash pop 取出最新的一笔,并从暂存区中移除
git stash apply 取出但不移除
git stash clear 清除暂存区
git clean
-f和-d选项分别删除untracked files和目录
git push origin
origin是远程主机
git查看config配置信息
查看系统config git config --system --list
查看当前用户(global)配置 git config --global --list
查看当前仓库配置信息 git config --
local
--list
git修改历史commit信息
1\ 对于最后一次commit信息的修改很简单,git commit -amend进入编辑界面之后直接修改信息就可以了
2\ 对于历史commit信息的修改,就必须要使用git rebase了,
git rebase -i HEAD~3,表示要修改当前版本的倒数第3次状态。
这个命令执行之后,会出来3行,
pick: ****
pick: ****
pick: ****
如果你要修改哪个,就把那行的pick改成edit,然后退出,
这时通过git log你可发现,git的最后一次提交已经变成了你选的那个了,这时再通过git commit -amend来对commit进行修改,修改完了之后,
修改了之后要回来,使用git rebase ---continue
ok了
git配置
1)通过git config配置
查看已经设置的配置
git config --list
使用默认颜色配置
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
默认编辑器设置
git config --global core.editor vim
其实以上这些设置之后会保存在文件~/.gitconfig中
2)修改配置文件~/.gitconfig或者git分支中的.git/config文件,修改完后不用重启,直接生效。
[user]
name = xxx
email = xxx
例如,让git默认使用vim编辑器
[core]
editor = vim
例如,设置git颜色
[color]
status = auto
branch = auto
diff = auto
其他
1、修改文件名最好用git mv filename1 filename2
2、删除文件最好用git rm filename
3、git fetch + git merge = git pull(如果git merge遇到冲突如何处理?)
一种情况是你对一个正在修改代码的的分支执行git pull操作,结果提示:
error: Your local changes to 'c/environ.c' would be overwritten by merge. Aborting.
Please, commit your changes or stash them before you can merge.
意思是说merge更新下来的内容会把本地修改的内容覆盖,先提交你的改变或者先将本地修改暂存起来。(因为不管是git pull还是git merge都需要保证工作目录树是干净的)
1)先将本地修改暂存起来
git stash
这样本地的所有修改就都被暂存起来,用git stash list可以看到保存的信息:
stash@{0}: WIP on master: a80c24d ...
stash@{0}就是刚才保存的标记
2)暂存了本地修改之后,就可以pull了
git pull
3)还原暂存的内容
git stash pop stash@{0}
系统提示类似的信息:
Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c
意思是系统自动合并并修改的内容,但是其中有冲突,需要解决其中的冲突。
4)解决完冲突后就可以正常的提交
4、对于服务器上没有审核的代码如果想拉下来实验,可以这样:git fetch ssh://[email protected]:29418/rlxlinux/kernel refs/changes/42/1342/2 && git checkout FETCH_HEAD
将会进入一个新的分支,你可以在这个分支上做任何修改而不会影响到其他的分支,一旦实验ok,也可以通过这个分支新建一个分支。