git使用总结(不断补充中...)

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)解决完冲突后就可以正常的提交

 

另外,合并冲突参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840202368c74be33fbd884e71b570f2cc3c0d1dcf000

 

4、对于服务器上没有审核的代码如果想拉下来实验,可以这样:git fetch ssh://[email protected]:29418/rlxlinux/kernel refs/changes/42/1342/2 && git checkout FETCH_HEAD

将会进入一个新的分支,你可以在这个分支上做任何修改而不会影响到其他的分支,一旦实验ok,也可以通过这个分支新建一个分支。

 


 

猜你喜欢

转载自blog.csdn.net/luckywang1103/article/details/44943017