Git开发问题集

生成ssh

生成新的SSH Key:

$ ssh-keygen -t rsa -C "邮件地址@youremail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):<回车就好>
注意1: 此处的邮箱地址,你可以输入自己的邮箱地址;注意2: 此处的「-C」的是大写的「C」

然后系统会要你输入密码:

Enter passphrase (empty for no passphrase):<输入加密串>
Enter same passphrase again:<再次输入加密串>
在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入。
这个设置是防止别人往你的项目里提交内容。

测试

可以输入下面的命令,看看设置是否成功,git@github.com的部分不要修改:

$ ssh -T git@github.com
如果是下面的反馈:

The authenticity of host 'github.com (ip)' can't be established.
RSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)?
不要紧张,输入yes就好,然后会看到:

Hi cnfeat! You've successfully authenticated, but GitHub does not provide shell access.
设置用户信息

现在你已经可以通过SSH链接到GitHub了,还有一些个人信息需要完善的。

Git会根据用户的名字和邮箱来记录提交。GitHub也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,
把名称和邮箱替换成你自己的,名字必须是你的真名,而不是GitHub的昵称。

$ git config --global user.name "cnfeat"//用户名
$ git config --global user.email  "cnfeat@gmail.com"//填写自己的邮箱

密钥安装

git ssh 密钥生成
ssh-keygen -t rsa -C "email"

测试连接
ssh -T git@github.com

全局配置

接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。
$ git config --global user.name "username"
$ git config --global user.email "email"


第六步,发布内容。
现在,这个简单的Blog就可以发布了。先把所有内容加入本地git库。
  $ git add .
  $ git commit -m "first post"

然后,前往github的网站,在网站上创建一个名为jekyll_demo的库。接着,再将本地内容推送到github上你刚创建的库。
注意,下面命令中的username,要替换成你的username。
  $ git remote add origin     git remote set-url origin
  $ git push origin Cluster


在本地新建一个分支: git branch Branch1
切换到你的新分支: git checkout Branch1
将新分支发布在github上: git push origin Branch1
在本地删除一个分支: git branch -d Branch1
在github远程端删除一个分支: git push origin :Branch1   (分支名前的冒号代表删除)


然后,创建一个没有父节点的分支gh-pages。因为github规定,只有该分支中的页面,才会生成网页文件。

      $ git checkout --orphan gh-pages

以下所有动作,都在该分支下完成。

发布内容。

现在,这个简单的Blog就可以发布了。先把所有内容加入本地git库。

      $ git add .

      $ git commit -m "first post"

然后,前往github的网站,在网站上创建一个名为jekyll_demo的库。接着,再将本地内容推送到github上你刚创建的库。
注意,下面命令中的username,要替换成你的username。

      $ git remote add origin https://github.com/username/jekyll_demo.git

      $ git push origin gh-pages

上传成功之后,等10分钟左右,

分支操作

查看分支:
1 查看本地分支:
$ git branch
2 查看远程分支
$ git branch -r


创建分支:

1 创建本地分支(建立分支后,仍停留在当前分支,切换分支:git checkout branchName)

$ git branch branchName

2 创建分支后切换到新分支

$ git checkout -b branchName


提交分支:

1 提交到远程分支

$ git commit -a -m 'my new branch'

git push origin branchName:branchName

2 如果想把本地的某个分支mybranch提交到远程仓库,并作为远程仓库的master分支

$ git push origin mybranch:master


删除分支:

1 删除远程分支

$ git push origin :branchName

2 删除本地分支,强制删除用-D

$ git branch -d branchName


合并分支

将分支branchName和当前所在分支合并

$ git merge branchName


标记tag

对当前分支打tag:

git tag tagContent

然后push到远程即可:

git push origin BranchName:BranchName

删除远程仓库文件或文件夹

$ git pull origin master 将远程仓库里面的项目拉下来

$ dir  查看有哪些文件夹

$ git rm -r --cached target  删除target文件夹
$ git commit -m '删除了target'  提交,添加操作说明

$ git push -u origin master 将本次更改更新到github项目上去

注:本地项目中的target文件夹不受操作影响,删除的只是远程仓库中的target, 可放心删除

每次增加文件或删除文件,都要commit 然后直接 git push -u origin master,就可以同步到github上了

合并dev分支文件到master主分支

1,上传dev分支文件,或者git pull更新dev分支
2,切换到master分支,合并文件git merge dev
3,上传master分支

push本地代码到GitHub出错

刚创建的github版本库,在push代码时出错:

$ git push -u origin master
To git@github.com:******/Demo.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:******/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]

push时出现not found

github中在本地进行上传的时候出现ERROR: Repository not found. fatal: The remote end hung up unexpectedly

一开始出现这个错误的时候还感觉很奇怪,我明明在github网站中已经建立了相应的文件夹了,
但还是提示相应的库找不到。费劲周折,终于把问题给解决了!

解决方法如下:

 在本地中相应的库文件夹命令中输入: vim ./git/config

将文件中的 [remote “origin"]部分去掉!