Git使用

在centos7安装git

yum install git

查看git 版本: git --version

安装完成后,还需要最后一步设置,在命令行输入:

git config --global user.name "名称"

git config --global user.email "邮箱"

这是设置全局用户名和邮箱

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。 

 

仓库:repository 可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

新建一个空目录用作仓库 mkdir 命令,打开刚新建的目录执行:git init 初始目录,git会把当前目录新建一个仓库,并告诉你目前是一个空仓库,并且会多出一个隐藏文件夹 .git , 可用 ls -a 查看

 

现在添加一个文件,比如 : aa.txt

首先在仓库目录或子目录新建一个文件,执行命令 git add aa.txt, 然后再执行 git commit -m "说明" 就可提交到仓库

现在对aa.txt 执行更改内容,然后再执行命令 git status 查看当前仓库状态:

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   aa.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

上面表示在主分支上 aa.txt 发生修改,但未提交更改

可进一步执行命令 git diff aa.txt 查看aa.txt 和仓库文件有哪些不同

diff --git a/aa.txt b/aa.txt
index 822fd96..1e05413 100644
--- a/aa.txt
+++ b/aa.txt
@@ -1,2 +1,3 @@
 this is a txt file;
 2
+abc

接着可以执行命令:git add aa.txt 在执行提交前再查看状态 git status 

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   aa.txt
#

显示aa.txt文件的更改准备提交到仓库中

现在可执行 git commit -m  命令进行提交

 

可以执行git log 或 git log 文件   查看提交记录

 

可以执行命令 git reset --hard HEAD^  回退到上一次版本,HEAD 相当一个指针,它总指向当前版本,也可以用commitid,

如 git reset --hard xxx   xxx指的是commit id;

git reflog 命令查看每一次命令记录,包括commit id;所以在git 可以回退也可以前进

 

工作区相当于我们的文件目录

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

 

git提交的是修改

Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,接着你再修改文件,然后执行提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

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

 

撤销修改

git checkout -- 文件 

把文件在工作区的修改全部撤销,这里有两种情况:

一种自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

如果想把暂缓区的修改撤销,在提交之前执行命令:git reset HEAD <file>  可把暂存区的修改撤销掉(unstage),重新放回工作区

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

 

删除文件

执行命令 rm -f cc.txt , 提交到暂缓区 git rm cc.txt ,  可以执行命令:git checkout -- 文件 进行恢复;

也可以提交删除:git commit -m ""  ,

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容,无法执行git reset HEAD 文件 进行恢复.

 

远程仓库

构建ssh key ,在用户主目录打开.ssh文件夹,执行命令ssh-keygen -t rsa -C "你的邮箱"

一路回车,最终生成id_rsaid_rsa.pub两个文件,id_rsa 是私钥,id_rsa.pub公钥

然后登录github 添加公钥设置

 

关联库,执行命令  git remote add origin https://github.com/ismeyes/learngit.git ,添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

把本地库的所有内容推送到远程库上:

git push -u origin master

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

克隆仓库,执行命令 git clone git@github.com:username/repository .git

或者:git clone https://github.com/username/repository 

 

分支:

创建分支并切换: git checkout -b dev 

相当于 git branch dev;  git checkout dev;

执行命令 git branch 查看分支和当前分支

 

合并分支:执行命令 git merge dev  合并指定分支到当前分支

执行命令 git branch -d dev 删除dev分支

分支冲突,当不同分支进行合并,并且同文件都有修改情况,尝试合并会发生错误:

Auto-merging cc.txt
CONFLICT (content): Merge conflict in cc.txt
Automatic merge failed; fix conflicts and then commit the result.

查看状态 git status

# On branch master
# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#       both modified:      cc.txt
#

查看冲突文件内容:

ccczzzzzz
<<<<<<< HEAD
bbb
=======
aaa
>>>>>>> feature1

手动修改后提交文件:git add cc.txt ;  git commit -m "conflict fixed";
[master 5482e78] conflict fixed

查看分支合并情况 git log --graph --pretty=oneline --abbrev-commit  简要记录信息

 

分支管理策略

禁用fast-forward 模式合并分支,命令: git merge --no-ff -m "merge by --no-ff" dev1

本次合并分支会增加一个commit,链路变如下图

在实际开发中,我们应该按照几个基本原则进行分支管理:

master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

干活都在dev分支上,也就是说,dev分支是不稳定的,到发布时,再把dev分支合并到master上,在master分支发布版本;

每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

 

git stash  保存现场   git stash list 查看保存现场 

git stash apply 恢复现场但不删除stash信息, git stash pop 恢复并删除stash信息

可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

git stash apply stash@{0}

Git友情提醒,分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的-D参数

git branch -D dev

 

 

git remote 查看远程仓库

git remote -v 显示详细信息,抓取权限和推送权限

origin  https://github.com/ismeyes/learngit.git (fetch)
origin  https://github.com/ismeyes/learngit.git (push)

 

现在,你的小伙伴要在dev分支上开发,就必须创建远程origindev分支到本地,于是他用这个命令创建本地dev分支:

$ git checkout -b dev origin/dev

git pull 拉取远程合并

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值