git使用总结

Linux安装git:有两种方式

一种方式是用yum安装git

  1. 用git --version 查看是否已经安装

 

出现上述情况应该是CentOS5的版本,由于yum源中没有git,所以需要预先安装一系列的依赖包。在centOS6的yum源中已经有git的版本了,可以使用yum源进行安装

2.安装命令:yum -y install git  只用这一条命令就安装了。但是一般安装的git版本比较老。简单但是版本不行,如果要想用新版本的git则需要从GitHub上现在,这就需要另一种安装方式。

3.git --version

 

第二种安装方式:编译安装git

1.用cat /etc/issue  查看centOS的版本

是CentOS6.5

  1. 通过yum  -y update  命令来更新版本
  2. 下载需要的git安装包

wget https://codeload.github.com/git/git/tar.gz/v2.13.0-rc1

 

4.将名称替换一下,如果下载的文件名称是以tar结尾的则不用替换了

mv v2.13.0-rc1 v2.13.0-rc1.tar.gz

5.解压压缩包

tar -zxvf v2.13.0-rc1.tar.gz

  1. 进入到解压后的文件中

cd git-2.13.0-rc1

  1. 拿到源码后我们要编译源码,但是在编译源码之前我们要获取编译时需要的依赖

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

  1. 安装编译源码所需的依赖时,如果用yum方式安装过git则会提示安装了,则要先把旧版本的git删除

Yum remove git

  1. 编译git源码

make prefix=/usr/local/git all

  1. 指定git的安装路径

make prefix=/usr/local/git install

  1.  打开环境变量配置文件

vim /etc/profile

在底部加入

 

export PATH=$PATH:/usr/local/git/bin

  1. 刷新环境变量

source /etc/profile

  1. 最后在输入 git --version 查看版本。

版本库管理

 

创建版本库

  1. 在一个合适的位置创建一个版本库(就是先创建一个目录)

Mkdir repository

Cd repository

  1. 可以先用git status来查看repository目录是不是git仓库,如果不是则执行git init

3.通过git init命令把这个目录变成Git可管理的仓库

4.创建一个文件,文件名为readme.txt 将这个文件放入到git仓库中只需要两步

  1. .使用git add 命令告诉git,把文件添加到仓库:git add readme.txt
  2. .用git commit命令告诉git,把文件提交到仓库:git commit -m 这是我的第一个文件

版本回退

1.可以用git log命令查看修改了什么东西。如果觉得乱可以用git log --pretty=oneline命令

 

2.用git reset --hard HEAD^  可以进行回退,回退到上个版本,如果想回退到上上个版本则用HEAD^^,回退到100个版本以前用HEAD~100

3.如果还想回到回退前的那个版本,只要刚才的窗口没有关,那么找到commit_id,执行下面的命令:git reset --hard 12f77bdc0e63ffba22e5191541113570655e897a

4.如果关掉了窗口,找不到回退的commit_id怎么办,git中通过git reflog专门记录你的每次命令。

生成SSH key

Linux 与 Mac 都是默认安装了 SSH ,而 Windows 系统安装了 Git Bash 应该也是带了 SSH 的。大家可以在终端(win下在 Git Bash 里)输入 ssh 如果出现以下提示证明你本机已经安 装 SSH, 否则请搜索自行安装下。

 

 紧接着输入 ssh-keygen -t rsa ,什么意思呢?就是指定 rsa 算法生成密钥,接着连续三个回 车键(不需要输入密码),然后就会生成两个文件 id_rsa 和 id_rsa.pub ,而 id_rsa 是密钥, id_rsa.pub 就是公钥。这两文件默认分别在如下目录里生成:

Linux/Mac 系统 在 ~/.ssh 下,win系统在 /c/Documents and Settings/username/.ssh 下, 都是隐藏文件,相信你们有办法查看的。 接下来要做的是把 id_rsa.pub 的内容添加到 GitHub 上,这样你本地的 id_rsa 密钥跟 GitHub 上的 id_rsa.pub 公钥进行配对,授权成功才可以提交代码。

 

 

 

GitHub 上添加 SSH key

 第一步先在 GitHub 上的设置页面,点击最左侧 SSH and GPG keys : 然后点击右上角的 New SSH key 按钮: 29向GitHub 提交代码 需要做的只是在 Key 那栏把 id_rsa.pub 公钥文件里的内容复制粘贴进去就可以了(上述示例 为了安全粘贴的公钥是无效的),Title 那栏不需要填写,点击 Add SSH key 按钮就ok了。 这里提醒下,怎么查看 id_rsa.pub 文件的内容? Linux/Mac 用户执行以下命令: cd ~/.ssh cat id_rsa.pub Windows用户,设置显示隐藏文件,可以使用 EditPlus 或者 Sublime 打开复制就行了SSH key 添加成功之后,输入 ssh -T git@github.com 进行测试,如果出现以下提示证明添 加成功了。

 

工作区和暂存区

1.Git中我的repository就是一个工作区,在我的工作区中有一个隐藏目录.git

 

这个.git不算是工作区,而是git的版本库,git版本库中存了很多东西,其中最重要的就是stage暂存区,还有git给我们创建的第一个分支master,以及master的一个指针head.

2.我们向git版本库中添加文件一般分为两步:

1)用git add readme.txt命令将reademe.txt 文件添加到暂存区中。

2).用git commit -m “描述”命令将暂存区中的所有内容提交到分支上。

因为我们创建git版本库的时候git自动创建了一个master分支,现在我们提交到的分支就是master分支。

  1. 举例说明:

1).新建一个文件newfile,然后修改readme文件用git命令查看状态

 

2).现在使用两次git add 将newfile和readme文件都添加到暂存区,然后使用git status查看状态

 

  1. .执行git commit -m “描述”,将暂存区中的数据提交到master分支上。这是暂存区中就没有数据了。

 

管理修改

Git跟踪管理的是修改而不是文件,为什么这么说呢?现在看例子。

  1. 先修改一次readme.txt 文件

 

增加了fish333这一行,然后执行git add readme.txt命令,查看一下状态执行git status命令

 

现在将第一次修改的数据放入到了暂存区中。

  1. 现在进行第二次修改:

 

然后直接执行git cmmit -m “描述”命令,然后在git status 查看一下状态。

 

发现第二次修改的内容没有被提交到分支上。

因为第一次修改后将文件通过git add命令放入到暂存区中了,但是第二次修改后没有放到暂存区中,导致git commit后只有第一次修改的数据放入到分支上了。

所以每次修改完后要执行git add 命令,要将修改的文件放入到暂存区中,然后执行git commit后才能到分支上。

提交后可以使用git diff HEAD -- readme.txt 命令来查看工作区和版本库中最新版本的区别。

没有提交的异常情况是:

 

正产情况下是

 

撤销修改

  1. 如果在工作区中修改了文件内容,如何进行撤销呢,使用git checkout -- <文件>命令进行丢弃。- - 是非常重要的,如果没有- -则表示切换到另一个分支的意思。
  2. 如果不仅在工作区中修改了文件内容,还将内容提交到了暂存区中,想要丢弃则分为两个步骤:
  1. .用git reset HEAD readme.txt将文件退回到工作区中。
  2. .用git checkout --readme.txt 将工作区的文件丢弃

 

  1. .
  2. .

将下面的bear555内容删除了。

3.如果已经提交到了分支上想要回退则参考版本回退

删除文件

1.如果还没有提交到工作区,那直接rm newfile.txt就行了。

2.如果是已经提交到分支的文件,rm newfile.txt只是把工作区的文件删除了,这时候工作区和版本库的内容不一致会出现下面提示:

 

这时候要把版本库中的文件也删除掉,用git rm 命令,并且git commit

 

然后进行git commit

 

  1. 如果要是不小心把工作区的文件误删了,则可以通过git checkout -- newfile.txt 命令恢复。

 

 

远程仓库

添加到远程仓库

1.要关联一个远程库,使用命令git remote add origin git@github.com:xiaohuniu/repository.git

这个xiaohuniu是我在github上的账户名称repository.git是本地仓库

2.关联后使用命令git push -u origin master,第一次推送master分支上的内容

3.也可以推送其他分支的内容:git push -u origin a ,推送分支a的内容。

从远程库克隆

1.先在github上创建一个远程库

 

 

  1. 然后使用git clone 克隆一个本地库

git clone git@github.com:xiaohuniu/firstsource.git

 

分支管理

创建分支

1.git branch 命令是分支的意思。

 

Master前面的*表示当前的分支是master

2.但是一般操作不在master上进行操作,可以重新创建一个分支

git branch a    创建一个名字叫a的分支

3.创建分支后还要切换到分支

git checkout a

 

a前面的*表示当前的分支是a

4.创建分支和切换到分支一步到位的命令是:

git checkout -b a

5.一般需要做两步,第一步切换到master分支,如果已经在了就不用切换了,第二部执行git merge a,意思是把a分支的代码合并过来。合并分支的命令:git merge  

  1. git branch -d a 删除分支a  前提是刚建的分支,或者a分支上的代码已经合并了。
  2. git branch -D a 当a分支的代码没有被合并,但是想强制删除a则使用这个命令
  3. git tag v1.0  设置版本号。
  4. 当切换到a分支上后,修改readme.txt文件,然后git add——>git commit 后修改的reademe.txt文件中的内容只在a分支上有,在master分支上没有,可以通过git merge a 将a分支上的内容合并到master分支上。

解决冲突

1.当创建一个新分支a后,将a上的文件readme.txt进行修改然后git add readme.txt——>git commit -m “描述”后通过git checkout master切换到master分支上,在修改readme.txt文件然后git add readme.txt——>git commit -m “描述”。这时候在执行命令git merge a进行合并会出现冲突如下:

 

  1. 通过git status命令可以查看冲突的文件:

 

  1. 这时候就需要手动解决冲突,打开readme.txt文件

 

 

<<<<<<< HEAD

zaimaster    shang zuole xiugai

=======

zaiafenzhishangzuolexiugai

>>>>>>> a

表示两个文件中冲突的部分,修改成其中一个就行,例如修改成zaiafenzhishangzuolexiugai

然后删除a分支,可与通过git log --graph来查看分支合并图。

分支管理策略

Fast forward是自动合并,在删除分支后,有时候会丢掉分支信息。

使用--no-ff方式合并

git merge --no-ff -m "描述" a

Bug分支

  1. git stash 将当前工作现场储藏起来,等以后恢复现场后继续工作。然后在创建一个新的分支进行修改bug,修改完后合并到master上,然后删除分支。

 

  1. 可以用git stash list命令查看工作现场存到哪了。

 

  1. 恢复工作现场有两种方式:
  1. .git stash apply 恢复,但是恢复后stash并没有被删除,要用git stash drop命令删除。
  2. .git stash pop ,在恢复的时候把stash进行删除。

删除完后在用git stash list 查看,如果没有内容则说明删除完了。

多人协作

  1. 查看远程库的信息用git remote命令,或者用git remote -v显示更详细的信息。
  2. 首先试图通过git push origin <分支名称> 推送自己的修改
  3. 如果推送失败是因为你本地要更新远程的修改,使用git pull试图合并。
  4. 如果合并有冲突,则解决冲突,并在本地提交。
  5. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值