热门内容

公众号"MAKE1"

获取行业最新资讯

请扫码添加

专业客服企业微信

本地git服务器的搭建和git命令的使用

简介

本地git服务器的搭建和git命令的使用

git搭建

git忽略文件

gitolite代码管控与团队协作

git整理源代码

Gitolite版本库管理

***************************修改git提交者的信息***********************

提交代码的log里面会显示提交者的信息

git config --global user.name [username]

git config --global user.email [email]

 

在git命令中开启颜色显示

git config --global color.ui true

 

 

0、新建git本地仓库,把下载下来的源码添加到本地仓库

在项目目录创建新的本地仓库,并把项目里的所有文件全部添加、提交到本地仓库中去:

1、删除原来的git库

$ find . -type d -name ".git"|xargs rm -rf

$ find . -type f -name ".gitignore"|xargs rm -rf

$ find . -type f -name ".gitattributes"|xargs rm -rf

2、初始化git库

$ git init #在当前的目录下创建一个新的空的本地仓库 Initialized empty Git repository in /home/user/test_proj/.git/

3、添加所有源码到git库 $ git add . #把当前目录下的所有文件全部添加到暂存区

4、创建提交 $ git commit -m "project init" #创建提交 [master (root-commit) b36a785] project init 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 readme.txt

********************************************************************

在Linux下某一个文件夹下,如何查找包含某一个字符串的文件

# find -type f -name "*.c" | xargs grep ""

是你要找的文件夹;如果是当前文件夹可以省略-type f 说明,

只找文件-name "*.c" 表示只找C语言写的代码,从而避免去查binary;

也可以不写,表示找所有文件是你要找的某个字符串

********************************************************************

 

 

一、如何取消已经被git跟踪的文件

 

某工程project用Git管理代码,但是在他的根目录下有个配置文件,比如project.iws是不需要git每次跟踪它的修改记录的。

一般做法是在.gitignore文件中添加一行

project.iws

但是这个文件如果之前已经被git跟踪了,这样修改是没有用的。每次修改完以后,用git status还是能看到提示它被修改了。

解决办法就是在git中删除这个文件的跟踪记录,用这个命令

git rm --cached project.iws //这个命令不行

这样就从git的跟踪记录中删除了这个文件的跟踪记录。配合之前在.gitignore加的那行配置,以后你修改 project.iws 这个文件,git就不会有提示了。

================================================

 

如果某些文件已经被跟踪了, 再放入到.gitinore可能会失效, 用以下命令来忽略

git update-index --assume-unchanged filename

 

撤销用:

git update-index --no-assume-unchanged filename

 

二、git patch 失败后如何处理

git am patch失败时的一种处理方法

应用patch时,最好不要使用master分支,用其他同步的分支处理后再merge到master中,确保安全。

1.$ git am 0001-XXX.patch

(错误信息如下)

...

When you have resolved this problem run "git am --resolved".

If you would prefer to skip this patch, instead run "git am --skip".

To restore the original branch and stop patching run "git am --abort".

2.$ git apply --reject 0001-XXX.patch

先合并没有产生冲突的文件,根据同目录下的*.rej文件找出冲突地方

3.$ git add ***

把本次patch改动的文件添加进入缓存

4.$ git am --resolved

接受修改,出现问题时使用reset恢复

三、git commit --amend 修改已经提交的注释

只能修改最近的一次提交

1、git commit --amend

2、直接修改注释:图中绿色部分

3、如下图,组合键ctrl + x离开,在弹出的界面输入Y,回车保存。

 

四、git commit 节点的合并

用rebase -i

比如下图的commit 历史,想要把 "Second change" 和 "Third change" 这两个commit合并到一起

那么可以git rebase -i 7a734e9d47895e096313003d6a2e4f697a16e2e3

注意 7a734e9d47895e096313003d6a2e4f697a16e2e3 是 "Second change" 的前一个commit ID。

 

然后会出现编辑器 (具体什么编辑器看你的配置,在linux下,默认是 vi)列出从 7a734e 后面的所有commit,如下图

因为我们要把 "Second change" 和 "Third change" 合并到一起,所以只需要把 "Third change"前面的那个 pick 改成 squash即可,意思是将 "Third change" 和 它前一个commit (即 "Second change") 合并

修改后应该是这样

然后保存退出编辑器,git 就会执行rebase操作,当他遇到 "Second" 和 "Third" 的时候,会再次启动编辑器告诉你即将合并,让你提供commit message,如下图

默认的包括了两个commit的原始消息,你可以在这里任意修改commit message,(注意上图,如果需要将2个默认的commit 提交信息(second change 和third change)改成新的提交信息,需要删除原来的,然后写入自己想要的信息即可)比如改成 “Second and Third changes in single commit",然后保存退出,git就会把这两个commit变成一个新的commit。做完后我们再用git log看一下,就会变成下图

对比原始git log信息,你就可以发现两个commit被合成一个了。

同理,你可以将任意多个commit合并成一个 (第一个commit保持 pick, 后续commit改成 squash即可)

 

五、It looks like git-am is in progress. Cannot rebase.

git rebase / git pull 的时候出现这样的错误。

It looks like git-am is in progress. Cannot rebase.

用如下方法解决:rm -rf .git/rebase-apply

这句话最好在工程的根目录执行。

0
 条评论
相关内容推荐