Skip to content

webcoding/useGit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

useGit

这是一个学习Git 用于测试的项目,所需软件

另外,关于文档说明文件,如readme.md文件,详情参看 Markdown 语法说明

在使用之前建议先大体了解一下git的相关基础:

如果学习使用并测试项目,请使用示例 Webtest 来测试学习。

不要用正在线运营的项目

Git详解教程列表:

之前以下链接失效,更新下面的链接到官网中文版(2017-02-17)

Git 常用命令图表——思维导图-Git.png

还可以参考一个比较全的教程Git教程

Git与github操作指南

首先了解一些命令,方便操作使用,下面提供一些命令行中常用的文件/文件夹操作命令:

创建:mkdir .ssh
修改:mv .ssb .ssh
删除:rm -rf .ssh
创建文件:touch README.md
输出文本:cat id_rsa.pub

Git命令行模式与github网站关联

使用ssh加密实现与github网站的关联,避免每次同步都需要填写帐户密码,首次产生一个ssh key:

cd ~/.ssh 

// 如果没有.ssh目录,则自己新建此目录即可,如下
// cd ~/
// mkdir .ssh
// cd .ssh

ssh-keygen -t rsa  //直接 N 次回车即可,默认名为id_rsa,不用修改即可
#

设置关联(复制上面产生的key——id_rsa.pub中代码——全选即可)

不同的操作系统,均有一些命令,直接将SSH key从文件拷贝到粘贴板中,如下:

mac
pbcopy < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your clipboard

windows
clip < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your clipboard

linux
sudo apt-get install xclip
# Downloads and installs xclip. If you don't have `apt-get`, you might need to use another installer (like `yum`)

xclip -sel clip < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your clipboard

在github网站setting中找到Add SSH Keys,添加复制的内容即可。

如此即关联完毕,如此在之后与github网站的push、pull操作则不用再输入github帐户密码了,非常方便。

可以使用下面的命令测试下:

$ssh -T git@github.com

然后会提示你输入密码,输入完成后,会显示在GitHub上的用户名。

首次使用需要的一些配置设置

第一次使用git,一般需要设置全局config,如下:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

第一次使用git push时,会提示设置git config --global push.default 将其设置为simple就行了,如下:

git config --global push.default simple  //你可以直接如此设置,不必等操作遇到才设置

以上配置完毕,就可以clone一个远程项目了,下面会给出一个完整详细的git项目操作示例,在文末还会将命令行示例中的常用命令做一汇总列表,方便查阅参考。

GIt命令行模式操作项目的详细步骤示例(此处以Git测试项目为例详解)

为了方便练习,确保有各种的权限操作,你可以fork一个git测试项目webtest,之后操作的时候把路径换成自己的就行了。

首先把项目克隆到本地(注意要选择项目目录,别clone到之前的.ssh目录下了)

//在项目目录右键选择Git Bash
Jack@ALICE /E/git
$ git clone git@github.com:pandoraui/webtest.git  //(注意选择项目目录,此处我们以E:/git文件夹为例)
cd
$ cd webtest //操作需要在项目文件夹内,不然直接进行git命令操作时,会提示错误

下面我们对内部文件进行及提交(更详细的基础操作,请参看Git基础

git status  //查看文件当前处于什么状态
git commit -a -m "edit intro"  //添加、修改以及合并提交
git push 推送到远程分支(github网站/Git服务器上),第一次操作新分支时,系统会提示远程没有当前testing分支,并提示操作方法新建远程分支,如下:
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream,

    git push --set-upstream origin dev


cloudyan@IT0101 /E/wamp/www/webframe/cnBootstrap (dev)
$ git push --set-upstream origin testing //把新建的本地分支推送到远程

git pull //从远程分支下拉更新(从默认的当前远程分支),直接merge合并到当前项目中
git pull git@github.com:other/useGit.git  //从其他项目链接合并更新

管理分支

git branch testing   //新建分支
git checkout testing //切换分支
git checkout master  //切换回主干

git checkout -b testing //新建分支并切换过去
相当于执行下面这两条命令:
git branch testing
git checkout testing

修改分支testing后合并到主干
git checkout master  //首先切换到主干
git merge testing    //合并分支testing

git branch --list  //查看分支,新建了分支并切换成功同时与远程分支建立了联系

合并后,testing分支完成历史使命,就可以删掉了
git branch -d testing  //此时如果此之前已经将此分支推送到了远程,那么本地分支删除,远程github网站上还是有此分支的。

如果在合并git merge testing的时候,出现了下面的错误提示
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
产生了冲突,可以git status(逻辑上说,这种问题只能由人来裁决。)

解决完冲突,执行merge添加、修改以及合并提交命令即可。
    
//本地分支删除后,下面删除远程分支testing
git push origin :testing  

如此,这些命令能满足最常用的git操作。

图形化软件TortoiseGit与github网站关联

如果你不喜欢Git命令行,那么你可以在安装以上软件后,使用图形化软件TortoiseGit来管理,TortoiseGit 是 TortoiseSVN的Git版,它很好的实现了与windows资源管理器的融合,使用界面与TortoiseSVN 非常类似。

安装好 TortoiseGit (有中文包的) 后,需要如下操作,但首先你要了解一点:

TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥。也就是说使用ssh-keygen -C "username@email.com" -t rsa产生的密钥在TortoiseGit中不能用。而基于github的开发必须要用到rsa密钥,因此需要用到TortoiseGit的putty key generator工具来生成既适用于github的rsa密钥也适用于TortoiseGit的ppk密钥。

如此,就需要在TortoiseGit中也要设置与github网站的关联。

具体操作如下:

运行TortoiseGit开始菜单中的puttygen程序,点击“Generate”按钮,鼠标在其软件界面中的空白地方来回移动直到进度条完毕,就会自动生一个随机的key。保存public key(此需要添加到github网站上) 和private key(此后缀为.ppk,后面要用)

在github网站上添加key操作Git key的添加,除此之外,需要右键指定具体的项目,选择TortoiseGit->Settings,设置Remote 其Putty即为上面保存的.ppk文件。麻烦之处是针对每个项目初次都要设置remote中的.ppk的路径。(参看更详细 TortoiseGit配置说明 3.4这一段—— 建立沟通远程版本库与TortoiseGit的联系)

事实上,在clone一个新项目时,可以使用图形化界面,其中有一项便是加载putty密钥,选择密钥的路径即可,如 C:\Users\Jack.ssh\pandora.ppk 如此,之后在该项目的右键settings-remote处便已经添加了密钥路径,效果同上操作。

如此之后便可以无障碍使用图形化界面上传下拉git项目了。

如有疑问可以加QQ群:187260298 咨询讨论,Good Luck !

遇到错误:###

  1. 在clone一个项目后做git命令操作时,出现下面错误解决办法:

    fatal: Not a git repository (or any of the parent directories): .git

**解决办法:**你得进入你的工作目录下,然后再git status 或者其它命令就没问题了。

新建分支并关联到远程(github网站)

如果远程已经有了分支,请使用章节(从主干下拉分支并关联分支)的命令

cloudyan@IT0101 /E/wamp/www/webframe/cnBootstrap (master)
$ git branch dev    //新建分支
$ git checkout dev  //切换分支
$ git branch --list  //本地切换至新分支,但此时新分支并未在远程(github网站)新建
* dev
  gh-pages
  master

如果远程没有此分子,那么当你操作push命令时,

$ git push     // 常规操作,系统会提示远程没有当前dev分支,并提示操作方法新建远程分支
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream,

    git push --set-upstream origin testing


cloudyan@IT0101 /E/git/webtest (testing)
$ git push --set-upstream origin testing   // 设置远程分支
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:pandoraui/webtest.git
 * [new branch]      testing -> testing
Branch dev set up to track remote branch dev from origin.


cloudyan@IT0101 /E/git/webtest (testing)
$ git branch --list  //查看分支,新建了分支并切换成功同时与远程分支建立了联系
* testing
  master

新建并关联成功

从主干下拉分支并关联分支

针对远程已经新建了分支, 在本地如何关联远程的分支

cloudyan@IT0101 /E/git/webtest (master)
$ git fetch origin

// 如果你的命令无效,我在win8中使用1.8.3就上述命令执行无效,
// 可以使用 git checkout -t 本地分支名 远程分支名,如:
// git checkout -t v4 origin/v4  //v3项目中的分支v4,分支名同则可省略,如:git checkout -t origin/gh-pages
// 使用 git branch -r可以查看远程分支

cloudyan@IT0101 /E/git/webtest (master)
$ git checkout dev
Branch dev set up to track remote branch dev from origin.
Switched to a new branch 'dev'

cloudyan@IT0101 /E/git/webtest (testing)
$ git branch --list
* testing
  master

关联并操作成功

这里是git命令行操作最常用的操作命令以及说明,如下:

git status //查看修改了什么
git add .  //跟踪修改的文件.代表当前文件夹(间接代表当前目录所有文件),也可以用指定的文件
git commit -m "简单的注释,修改了什么"  //注意git对中文的支持不太友好,暂未提供优化方法
git push   //提交到远程分支(github网站上),如果远程没有此分支,系统会提示如何操作,命令如下:
git push --set-upstream origin proname //对应远程的项目名称proname

git pull   //从远程分支更新(从默认项目分支)
git pull git@github.com:other/useGit.git  //从其他项目分支合并更新

git branch testing   //新建分支
git checkout testing //切换分支
git checkout master  //切换回主干

git checkout -b testing //新建分支并切换过去
相当于执行下面这两条命令:
git branch testing
git checkout testing

修改分支testing后合并到主干
git checkout master  //首先切换到主干
git merge testing    //合并分支testing

合并后,testing分支完成历史使命,就可以删掉了
git branch -d testing

如果在合并git merge testing的时候,出现了下面的错误提示
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
产生了冲突,可以git status(逻辑上说,这种问题只能由人来裁决。)

如果想新建分支等,可以参看 Git详解之三 Git分支

用的多了就熟练了,Git命令行确实很简单而且功能十分强悍!建议多用用命令行模式。

About

Git学习及关联 github 网站实践手册

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •