Git初体验

 

“Git是什么?

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

Git有什么特点?简单来说就是:高端大气上档次!“                                     -------------------廖雪峰

————————————————————————————————————————————————————————

2018.8.22添加

// git bash生成ssh(我的是码云的)
ssh-keygen -t rsa -C "git@gitee.com:jxwacoolboy/Spring-Cloud-Config-Test.git"
// 查看生成的rsa秘钥
cat ~/.ssh/id_rsa.pub
// 第一次运行git先和版本库同步一下,会把服务器上的readme和license等同步到本地,不然直接提交会抱错
//git pull --rebase origin master

//初始化版本库
git init
// 本地commit之后会自动创建master分支,此后才能自己创建新的分支
git branch study_git01
// 切换到study_git01分支
git checkout study_git01
// git gui可以打开gui工具方便提交和同步
// 指定远程仓库
 git remote add origin https://gitee.com/jxwacoolboy/Spring-Cloud-Config-Test.git
// 本地关联远程分支
 git branch --set-upstream-to=origin/study_git01 study_git01
// 从远程仓库上拉取文件
git pull origin study_git01
// 有时会报错如下:
// fatal: refusing to merge unrelated histories
// 这是因为因为两个仓库不同,发现refusing to merge unrelated histories,无法pull,
// 要把两个不同的项目合并
git pull origin study_git01 --allow-unrelated-histories

————————————————————————————————————————————————————————

创建一个版本库:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

pwd命令用于显示当前目录。我的电脑上,这个仓库位于/Users/michael/learngit

然后,通过git init命令把这个目录变成Git可以管理的仓库,然后你能在目录下看到一个空的仓库(empty Git repository),细心的可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

 

添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  2. 使用命令git commit -m <message>,完成。                                                        

例如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

 

git status 可以查看当前版本库中文件的状态,比如,你修改一个文件之后输入命令可以看到如下:

$ 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:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

 

如果能看看具体修改了什么内容,,可以使用git diff这个命令看看(git diff是工作区(work dict)和暂存区(stage)的比较,而git diff -cached是暂存区(stage)和分支(master)的比较,暂存区(stage)是git add之后文件保存的一块区域,工作区(work dict)就是真正git commit之后文件提交到分支的。git diff --staged 暂存与仓库的差异【add之后,commit之前】,git diff commit_id_1 commit_id_2用来比较2个commit之间区别,git diff HEAD -- readme.txt命令可以查看readme.txt文件在工作区和版本库里面最新版本的区别)

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

 

回退到上个版本可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at e475afc add distributed

HEAD^表示回退到上个版本,上上一个版本就是HEAD^^,当然往上100个版本可以写成HEAD~100

 

Git提供了一个命令git reflog用来记录你的每一次命令:

$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file

 

git log命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数(另外,git log --onelinegit log --pretty=oneline的区别就是前者的id只显示7位)

$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file

 

git版本库分为暂存区和分支,暂存区实在执行git add 命令之后,将你的这一次修改加入到暂存区(git版本库管理的是修改而不是文件,也就是说暂存区存的是哪个文件进行了修改,并不知道具体改了什么),然后执行git commit之后,将暂存区的修改提交至版本库。也就是说,当你修改了一个文件没有执行git add时,执行git commit是不会把你这个修改提交的。

git checkout -- file

可以丢弃工作区的修改:

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

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

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

总之,就是让这个文件回到最近一次git commitgit add时的状态。

 

git reset HEAD file

可以把暂存区的修改撤销掉(unstage),重新放回工作区;

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

 

当你使用删除文件test.txt ( rm test.txt ) 时,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了;现在你有两个选择,

    一是确实要从版本库中删除该文件,那就用命令git rm  test.txt删掉,并且git commit

    另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

$ git checkout -- test.txt

git checkout -- file其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

 

详细命令请查看:https://www.yiibai.com/git/git-quick-start.html   

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值