Git入门教程(工作中常用的命令)

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

任何一台机器都可以有一个本地版本的控制系统,其实就是一个硬盘上的文件,我们称之为仓库(repository)。但如果是多人协作的话,我们需要一个线上版本库,例如可以将线上仓库放到Github进行管理。

1、安装

首先根据自己的系统下载对应的软件版本,然后安装git客户端,安装完成之后,在桌面上右击可以看到git的功能菜单。

2、创建仓库

在桌面创建一个文件夹studyGit,然后在桌面上右击,选择Git base Here,可以打开git操作窗口

 $ cd studyGit

切换到我们自己创建的git仓库目录

$ git init

将这个目录初始化为git目录,完成后,我们在进入这个文件夹,可以看到一个.git目录

 

3、提交版本 回退版本

提交版本

我们在studyGit里创建一个文件helloGit.txt,输入内容如下

I am learning Git!

现在可以提交,不过在这之前我们需要添加这个文件到git仓库中。添加到仓库(git add "文件名"),添加所有工作区文件到仓库(git add -A)

$ git add helloGit.txt

添加成功后,没有任何结果,但是可以用git status查看状态,这个新文件已经被添加进去了,同理当我们从仓库中需要删除文件时,也只需要用git rm "文件名"删除,这个删除是删除仓库中的文件,这个文件不在进行版本管理,在你的工作区还是存在的。

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   helloGit.txt

提交版本(git commit -m "提交信息"),这条版本记录生成了一个版本id(92076e3)

$ git commit -m "添加helloGit"
[master (root-commit) 92076e3] 添加helloGit
 1 file changed, 1 insertion(+)
 create mode 100644 helloGit.txt

这样,一条版本就提交成功了,查看一下日志(git log)

$ git log
commit 92076e3603f097bcc86f2ad65827299246e86fb9 (HEAD -> master)
Author: Administrator <1351698648@qq.com>
Date:   Thu Dec 6 17:04:14 2018 +0800

    添加helloGit

回退版本

在helloGit.txt文本换行添加如下内容

Git is a version control software!

再次提交,在提交前也需要用git add记录每次更新

$ git add helloGit.txt


$ git commit -m "修改helloGit"
[master 0ab2c54] 修改helloGit
 1 file changed, 2 insertions(+), 1 deletion(-)

这时我发现刚刚提交的版本有问题,需要回滚到上一个版本(git reset --hard HEAD),HEAD代表当前分支的当前版本。

$ git reset --hard HEAD
HEAD is now at 92076e3 添加helloGit

回到上上一个版本快捷命令是( git reset --hard HEAD^)

也可以查看版本的id,直接用id回滚,一般是跨了几个版本的回退

$ git log
commit 0ab2c54596e7dc4f7e715f80e6155566adfdb3a5 (HEAD -> master)
Author: Administrator <1351698648@qq.com>
Date:   Thu Dec 6 17:24:42 2018 +0800

    修改helloGit

commit 92076e3603f097bcc86f2ad65827299246e86fb9
Author: Administrator <1351698648@qq.com>
Date:   Thu Dec 6 17:04:14 2018 +0800

    添加helloGit

Administrator@PC201701131550 MINGW64 ~/Desktop/studyGit (master)
$ git reset --hard "0ab2c54596e7dc4f7e715f80e6155566adfdb3a5"
HEAD is now at 0ab2c54 修改helloGit




$ git reset --hard "92076e3603f097bcc86f2ad65827299246e86fb9"
HEAD is now at 92076e3 添加helloGit

撤销回滚

现在版本已经回退到了第一个版本(添加helloGit),这时查看git log,第二条版本记录已经看不到了,如果我又想恢复第二个版本记录(修改helloGit)可以吗?当然可以了,git中的命令十分强大。

git reflog

92076e3 (HEAD -> master) HEAD@{0}: reset: moving to 92076e3603f097bcc86f2ad65827299246e86fb9
0ab2c54 HEAD@{1}: reset: moving to 0ab2c54596e7dc4f7e715f80e6155566adfdb3a5
0ab2c54 HEAD@{2}: commit: 修改helloGit
92076e3 (HEAD -> master) HEAD@{3}: reset: moving to 92076e3603f097bcc86f2ad65827299246e86fb9
92076e3 (HEAD -> master) HEAD@{4}: reset: moving to HEAD
92076e3 (HEAD -> master) HEAD@{5}: commit (initial): 添加helloGit

git reflog可以查看版本中的所有操作记录,上图中我们已经可以看到第二条版本记录的id(修改helloGit)是 "0ab2c54 ",用这个id在进行一次reset就可以了。

$ git reset --hard 0ab2c54
HEAD is now at 0ab2c54 修改helloGit

可以看到,第二条记录又回来了。

4、分支创建 合并 删除

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会对别人带来困扰。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

分支创建

$ git branch
* master

首先,使用git branch命令查看当前分支,git中默认的主分支是master,当前分支前面会标一个*号。

创建一个second分支,并且切换到该分支

$ git branch second


$ git branch
* master
  second


$ git checkout second
Switched to branch 'second'

再次查看git branch,我们就能看到当前分支已经切换到second了,在helloGit.txt中插入以下内容。

I am learing how to use branch!

提交这次记录。

$ git add helloGit.txt


$ git commit -m"学习使用分支"
[second db24185] 学习使用分支
 1 file changed, 1 insertion(+)

现在helloGit中的内容是

I am learning Git!
Git is a version control software!
I am learing how to use branch!

分支合并

完成second分支上的工作,现在我们切换到master主分支。

$ git checkout master

查看文本内容:

I am learning Git!
Git is a version control software!

刚才添加的内容不见了!因为那个提交是在second分支上,而master分支此刻的提交点并没有变:

现在我们把second的工作成果合并到master上。

$ git merge second
Updating 0ab2c54..db24185
Fast-forward
 helloGit.txt | 1 +
 1 file changed, 1 insertion(+)

查看文本内容

I am learning Git!
Git is a version control software!
I am learing how to use branch!

可以卡到,现在second分支上的内容已经全部同步到master上了。现在可以删除second分支。

$ git branch -d second
Deleted branch second (was db24185).

$ git branch
* master

这样分支不仅又重新回到了主分支上,而且内容也是最新的。

5、远程仓库(GitHub)

假设一个情景:

你在本地创建了一个Git仓库,用于保存工作时候的代码,周末放假的时候想起来有段代码有问题,不赶紧修改的话,周一的时候会被BOSS骂,那你可能想着在家修改它,因为工作量不是很大。

那么我们可以创建一个远程仓库,将公司的Git仓库同步到远程仓库,然后在家更新这个仓库,修改完代码,再将修改后的代码同步到远程仓库上,周一到公司直接更新远程仓库的代码就行了

这样,GitHub上的仓库既可以作为备份,又可以异地工作,真是一举两得。

创建远程仓库

首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

在Repository name填入learnGit,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

现在,在GitHub上的这个learnGit仓库还是空的,现在,我们我们将远程仓库和本地仓库相关联,在本地的learnGit仓库下运行命令:

$ git remote add origin https://github.com/{username}/learnGit.git

请千万注意,把上面的name替换成你自己的GitHub账户名。

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:name/learnGit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值