Updates were rejected because the tip of your current branch is behind问题处理

$ git push -u origin master
To [email protected]:******/Demo.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘[email protected]:******/Demo.git’
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. ‘git pull’)
hint: before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.

问题产生原因:是因为远程repository和我本地的repository冲突导致的,而我在创建版本库后,在github的版本库页面点击了创建README.md文件的按钮创建了说明文档,但是却没有pull到本地。这样就产生了版本冲突的问题。

有如下几种解决方法:

1.使用强制push的方法:

$ git push -u origin master -f

这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。

2.push前先将远程repository修改pull下来

$ git pull origin master

$ git push -u origin master

3.若不想merge远程和本地修改,可以先创建新的分支:

$ git branch [name]

然后push

$ git push -u origin [name]

Git :fatal: refusing to merge unrelated histories问题处理

今天github创建了一个仓库(有README.md),把本地仓库和Github上关联以后,发现git pull,git feach提醒fatal: refusing to merge unrelated histories.
问题产生原因:两个分支是两个不同的版本,具有不同的提交历史,执行以下命令:
$git pull origin master --allow-unrelated-histories
可以允许不相关历史提,强制合并,解决了这个问题。

Centos 升级git新版本

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
># yum install gcc perl-ExtUtils-MakeMaker
># wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
># tar zxvf libiconv-1.14.tar.gz
># cd libiconv-1.14
># ./configure –prefix=/usr/local/libiconv
># make && make install
># yum remove git
># wget https://github.com/git/git/archive/v2.2.1.tar.gz
># tar zxvf v2.2.1.tar.gz
># cd git-2.2.1
># make configure
># ./configure –prefix=/usr/local/git –with-iconv=/usr/local/libiconv
># make all doc
># make install install-doc install-html
># echo “export PATH=$PATH:/usr/local/git/bin” >> /etc/bashrc
># source /etc/bashrc
># git –version
>git version 2.2.1

Github添加文件.gitignore作用

该文件用来描述Git 仓库中不需管理的文件与目录。

通过它可以在初始化时自动生成.gitignore 文件。这个设定会帮我们把不需要在Git 仓库中进行版本管
理的文件记录在.gitignore 文件中。

如果初始化时忘记加入此文件,可在项目根目录中创建.gitignore文件,在文件中添加不想版本控制的文件,在.gitignore文件中“#”后面的语句会被忽略(相当于注释)。在.gitignore文件中一行只能出现一个语句(注释语句如果和过滤规则写在同一行,则会过滤规则会失效)。

规律规则:

  • 一行只能出现一个语句。
  • 规则的执行顺序是从上到下。
  • 所有空行或者以# 开头的行都会被 Git 忽略。
  • 匹配模式如果是末尾跟“/”则表示过滤目录。
  • *匹配多个字符。
  • 模式前使用“!”表示忽略模式以外的文件或目录。
  • ?匹配单个字符。
  • “[]”匹配放括中的任一字符