Mac下的Linux系统云服务器操作(二)Git的安装与使用

人生有时候就是这么奇妙,在我刚准备接触Git的时候,GitHub 官方文档推出中文版

一、Git的安装

首先,你可以试着在Terminal输入git,看看系统有没有安装Git。
安装步骤:
1,安装homebrew
2,通过homebrew安装Git:brew install git
具体方法请参考homebrew的文档:http://brew.sh/
检测是否安装成功:git --version 显示git的当前版本

二、Git的使用

参考廖雪峰的课程,本着“把书读薄”的精神,此处对课程内容做了精简和顺序调整。有关终端的操作指令同Linux指令。好的,现在打开Terminal开始进行操作。

1,创建版本库

# 1,创建文件夹

$ pwd # 显示当前文件夹
$ mkdir LearnGit # 新建文件夹,LearnGit是自定义的文件夹名字
$ cd LearnGit # 打开新建的文件夹

# 2,创建git版本库

$ git init # 把当前目录变成Git可以管理的仓库, .git文件是Git来跟踪管理版本库的,尽量不要手动修改这个目录里面的文件,会破坏Git仓库。

2,文件的修改
Git版本库的工作原理:因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git add把文件修改添加到暂存区;git commit就是往master分支(当前分支)上提交更改:
在这里插入图片描述
暂存区提交后:
在这里插入图片描述

# 1,添加文件
# 假设现在已编写一个readme.txt文件,将其放入本地的版本库LearnGit里
# 注意,一定要放在LearnGit目录下(子目录也行)
# 两步:
$ git add readme.txt # 把文件添加到仓库
$ git commit -m "<massage>" # <massage>是本次提交的说明
$ cat readme.txt # 查看文件的内容

# 注意,每次修改,如果不用git add到暂存区,那就不会加入到commit中。

# 2,查看当前Git版本库的状态
$ git status
$ git diff "FileName" # 查看文件的修改内容

# 3,查看版本修改日志
$ git log # 显示详细的历史记录,HEAD是对应当前版本的指针
$ git log --pretty=oneline # 一行显示内容包括版本号(commit ID)和<massage>,所以<massage>很重要

# 4,返回旧版本
$ git reset --hard HEAD^ # 回到上一版本
$ git reset --hard "commit ID" # 返回到commit ID对应的版本,即阔以回到未来
$ git relog # 查看历史版本的commit ID

# 5,撤销修改
# 先查看当前版本库的状态
$ git status

# 情景1,未被放进暂存区,文件还在工作区
$ git checkout -- readme.txt

# 情景2,已放进暂存区,但未提交
$ git reset HEAD readme.txt # 返回情景1
$ git checkout -- readme.txt

# 情景3,已提交,但未推送到远程库
# 参考4,返回旧版本
$ git relog
$ git reset --hard "commot ID"

# 6,删除文件
$ rm readme.txt # 直接在文件管理器中把没用的文件删了

# 选择1,确实需要删除
$ git rm readme.txt
$ git commit -m "<massage>"

# 选择2,误删
$ git checkout -- readme.txt # 用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

# 注意,从来没有被添加到版本库就被删除的文件,是无法恢复的!

3,分支的处理
Git的默认分支是master,指针HEAD严格来说是指向当前分支的。
3.1 基本操作

# 1,创建分支
$ git checkout -b 分支名

# 2,查看当前分支
$ git branch # 当前分支带*号

# 3,切换分支
$ git checkout 分支名

# 4,创建+切换分支
$ git checkout -b 分支名

# 5,合并某分支到当前分支
$ git merge 分支名
$ git merge --no-ff -m "<massage>" 分支名 
# 该指令在合并同时创建一个新的commit,所以加上-m参数,把commit描述写进去
# 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并
# 而fast forward合并就看不出来曾经做过合并

# 6,删除分支
$ git branch -d 分支名

3.2 分支冲突
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容。
问题情景:
在分支上修改文件并提交,切换到master分支后再次修改文件并提交,然后在进行分支合并时,会出现冲突
解决方法:
把Git合并失败的文件手动编辑为希望的内容,再提交,最后删除分支。

# 用带参数的git log也可以看到分支的合并图
$ git log --graph --pretty=oneline --abbrev-commit 

3.3 暂存当前分支任务
流程:

$ git stash # 暂存
$ git status # 查看当前状态

$ git checkout 分支名 # 切换到需要debug的分支
$ git checkout -b 临时分支名 # 在debug分支创建临时分支
$ git add 文件名  # debug完成,递交任务
$ git commit -m "<massage>"

$ git checkout 分支名# debug后,切回之前暂存的分支名
$ git merge --no-ff -m "<massage>" 临时分支名 # 合并,提交debug

$ git checkout 暂存分支名
$ git status # 查看当前状态

#工作现场的还原
# 法1,
$ git stash apply # 恢复后,stash内容并不删除
$ git stash drop # 删除stash内容

# 法2,
$ git stash pop # 恢复并删除stash内容

$ git stash list # 查看stash内容

3.4 就地销毁分支
丢弃一个没有被合并过的分支:

$ git branch -d 分支名 # 如果分支没有合并,会有提示
$ git branch -D 分支名 # 强行删除分支

3.5 多人协作

  1. 用git push origin <分支名> 推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并
  3. 如果合并有冲突,则解决冲突,并在本地提交
  4. 没有冲突或者解决掉冲突后,再用git push origin <分支名> 推送就能成功
# 1,查看远程库的信息
$ git remote
$ git remote -v # 详细信息

# 2,推送分支
$ git push origin 分支名 # master分支是主分支,因此要时刻与远程同步

# 3,抓取分支
$ git pull
$ git branch --set-upstream-to=origin/dev dev # 设置本地dev分支与远程origin/dev分支的链接

# 4,在本地创建和远程分支对应的分支
$ git checkout -b branch_name origin/branch_name # 本地和远程名称最好一致

# 5,建立本地分支和远程分支的关联
$ git branch --set-upstream branch-name origin/branch-name

4,Github的使用
4.1 本地Git与远程仓库GitHub的连接
先自行注册远程仓库GitHub账号。由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

step 1: 创建SSH Key。
打开Mac的Terminal,输入以下命令即可打开id_rsa和id_rsa.pub所在的文件夹。

$ open ~/.ssh

step 2: 登陆GitHub。
打开“Account settings”,“SSH Keys”页面,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。

4.2 添加远程库
在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步。
登陆GitHub,在右上角找到“Create a new repo”按钮,创建一个新的仓库LearnGit。然后在本地的LearnGit仓库下运行命令:

$ git remote add origin git@github.com:自己的GitHub账户名/LearnGit.git

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

$ git push -u origin master # 首次推送需要参数 -u
$ git push origin master

# 注意,首推存在SSH的警告,输入yes回车即可

将远程库拉到本地:

$ git clone git@github.com:自己的GitHub账户名/库名.git
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值