Git管理代码的基础使用、教程(一)

直接切入正题了,至于安装之类的文章,随便搜索一下也很多了。。不再赘述了

1. 找个你开心的地方,新建一个文件夹,进入这个文件夹

初始化一个代码仓库:

git init

添加文件到仓库分为2步:

git add <file>
git commit -m <message>

查看当前代码仓库的状态:

git status

如果git status告诉我们有内容被修改了,那么查看当前仓库被修改的详情信息:

git diff

2. 时光机器

git中表示当前版本的是HEAD指向的版本,所以,我们可以在版本中自由来回穿梭,使用命令

# 绝对回退方式,commit_id是使用sha1生成的不重复的字符串,以十六进制表示
# 回退的commit_id不用写全,写前面几位就可以,git会自动查找
git reset --hard <commit_id> 

# 相对版本回退方式
git reset --hard HEAD^   # 回退到上一个版本
git reset --hard HEAD^^  # 回退到上上个版本
# 此时要回到上100个版本呢?
git reset --hard HEAD~100

在使用时光机器之前,可以使用

git log

查看提交历史, 以确定要回到哪个版本

重返未来,使用命令查看命令历史,以便确定要回到哪个版本

git reflog

3. 工作区和版本库

现有以下场景:

a. 改乱了工作区的文件,想丢弃修改使用

git checkout -- <file>

# 这个命令实质是用版本库的版本替换工作区的版本,无论是修改,还是删除,都可以还原。

b. 你把改乱的文件添加到暂存区了,想放弃使用

git reset HEAD <file>

这时回到了a的情况,我想你知道该怎么办了。。

c. 你把乱糟糟的文件添加到版本库了,这时可以使用2时光机器。

d. 你想删除掉一个看着不舒服的文件使用命令

git rm <file>
# 如果一个文件已经被提交到版本库,那么永远不用担心误删,但是,只能恢复文件到最新版本,你将会丢失最近一次提交后你修改的内容。

4. git杀手级功能之----远程仓库:

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。

实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

5. 使用ssh连接github远程仓库

查看你当前机器用户主目录下是否有.ssh文件夹,有就直接使用,没有就使用命令生成

ssh-keygen -t rsa -C "[email protected]"

在github设置公钥,实现仅可以添加公钥的电脑往仓库里推送代码

在github上创建一个远程仓库,这里也不再赘述了,同步本地仓库到远程仓库


#关联远程仓库:
git remote add origin git@server-name:path/repo-name.git
即
git remote add origin [email protected]:<github账户名>/<本地仓库文件夹名>.git
# 接着就可以将本地文件推送了
git push -u origin master

# 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
# 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

当然,最理想的方式是先远程创建好仓库,本地克隆使用命令

# 两种方式进行克隆
# 使用https
git clone https://github.com/<github用户名>/<仓库名>.git
# 使用ssh
git clone [email protected]:<github用户名>/<仓库名>.git

这么优秀的git,命令肯定不用全部我们自己写啊,我们在本地选择一处自己喜欢的位置,在本地写上git clone后面直接复制即可,进入你的github每一个仓库都有路径

使用ssh速度更快哦!

克隆下来,查看远程仓库信息,使用命令

git remote -v

猜你喜欢

转载自blog.csdn.net/zizle_lin/article/details/81406976