git使用常见问题

1 .gitignore

  在工程实现过程中,会生成一些中间文件,或者在项目中的部分文件是不需要进行版本管理的。对于这些文件应该对于Github来讲是透明的。Github提供这种功能,可以自己指定哪些文件可以不被管理。具体方法是在版本管理的根目录下(与.git文件夹同级)创建一个 .gitignore(gitignore是隐藏文件,所以前面有个点)
因为.gitignore是隐藏的,因此有时候在push后,有些文件或者目录并没有push到远端。这个时候就先用git status查看一下,这些文件可能是Untracked files。通过git add添加,或者把.gitignore删掉,重新提交。

文件.gitignore的格式规范:

A:#为注释
B:可以使用shell所使用的正则表达式来进行模式匹配
C:匹配模式最后跟”/“说明要忽略的是目录
D:使用!取反(例如目录中包含 test.a,并且gitignore文件中包含 *.[oa],如果在文件中加入 !test.a 表明忽略除test.a文件以外的后缀名为.a或者.o的文件)

More about .gitignore

2. 提交代码到服务器后发现有些目录是空的

git status查看后,出现:

modified: xxx(modified content, untracked content)

大概意思是xxx目录没有被跟踪。那自然push上去的时候是空的了,解决办法:后来发现这主要是xxx目录下有一个.git 目录,可能是被人给你这个目录的时候里面有了.git目录。删除.git目录。重新git add .git add -A

3. git push后无法提交

出现:

1
2
3
4
5
6
To git@192.168.1.48:xxxxgit
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@192.168.1.48:xxxx.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.

大概意思是远程仓库比本地更新早,需要先git pull,之后应该还要合并分支,解决冲突。具体参见 http://blog.jobbole.com/78960/

git
git