Git 配置及其常用命令

前言

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。其特点为:分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。如需了解更多,网上查一下就知道了。
然后呢,就有很多基于git开发的衍生产品。

Gitlib

Gitlib 是用于实现git功能的开发库。

GitHub

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。
GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目Ruby on Rails、jQuery、python等。

GitLab

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

Gitee

Gitee是开源中国(OSChina)推出的基于Git的代码托管服务。Gitee包括三个版本,分别是:社区版、企业版和高校版。

下面就以Gitee为例,介绍其配置使用。为什么以这个为例呢?因为是国内的,比较方便点,哈哈。不过问题不大,其他的平台步骤命令差不多。

Gitee 配置使用

这里有两种方法

一、第一种,先有远程仓库

首先注册账号,这个步骤就不多bb了,每个平台都有,手机号邮箱注册等。

  • 1、注册完后。点击仓库空间信息,再点新建仓库。
    在这里插入图片描述

在这里插入图片描述

  • 2、配置本地的git配置信息,执行git config命令预先配置好相关的用户信息,配置执行如下:
$ git config --global user.name "你的名字或昵称"
$ git config --global user.email "你的邮箱"
  • 3、将仓库clone到本地,执行$ git clone https://gitee.com/用户个性地址/HelloGitee.git ,将远程仓库克隆到本地
    修改后再push到 Gitee 的仓库
kch@kch:~$ git clone https://gitee.com/kchmmd/time-weather.git
正克隆到 'time-weather'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (6/6), 完成.
检查连接... 完成。
kch@kch:~$ ls time-weather
LICENSE  README.en.md  README.md
kch@kch:~$ 
  • 4、修改代码后,在仓库目录下执行下面命令

git add . #将当前目录所有文件添加到git暂存区
git commit -m “my first commit” #提交并备注提交信息
git push origin master #将本地提交推送到远程仓库 如果需要账号密码的话就输入账号密码

@kch:~/time-weather$ ls
getInfoDate.py     image.qrc  main.cpp      README.md   settings.cpp  settings.ui           time-weather.png  widget.cpp  widget.ui
getInfoWeather.py  LICENSE    README.en.md  setInfo.sh  settings.h    time-weather.desktop  time-weather.pro  widget.h
kch@kch:~/time-weather$ git add .
kch@kch:~/time-weather$ git commit -m "first commit "
[master 2112ff1] first commit
 14 files changed, 1244 insertions(+)
 create mode 100755 getInfoDate.py
 create mode 100755 getInfoWeather.py
 create mode 100644 image.qrc
 create mode 100644 main.cpp
 create mode 100755 setInfo.sh
 create mode 100644 settings.cpp
 create mode 100644 settings.h
 create mode 100644 settings.ui
```create mode 100644 time-weather.desktop
 create mode 100644 time-weather.png
 create mode 100644 time-weather.pro
 create mode 100644 widget.cpp
 create mode 100644 widget.h
 create mode 100644 widget.ui
kch@kch:~/time-weather$ git push origin master
Username for 'https://gitee.com': kchmmd
Password for 'https://kchmmd@gitee.com': 
对象计数中: 16, 完成.
Delta compression using up to 2 threads.
压缩对象中: 100% (15/15), 完成.
写入对象中: 100% (16/16), 32.98 KiB | 0 bytes/s, 完成.
Total 16 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.2]
To https://gitee.com/kchmmd/time-weather.git
   289336d..2112ff1  master -> master
kch@kch:~/time-weather$ 
  • 现在在看gitee上就有了
    在这里插入图片描述

二、第二种方法。和另上面方法的差别,在于先创建仓库。

1、初始化

$ git init 
$ git remote add origin https://gitee.com/用户个性地址/HelloGitee.git

2、接下来,进入你已经初始化好的或者克隆仓库的目录,然后执行:

$ git pull origin master

3、修改/添加文件,否则与原文件相比就没有变动。

$ git add .
$ git commit -m "第一次提交"
$ git push origin master

然后如果需要账号密码的话就输入账号密码,这样就完成了一次提交。此时,你可以在你的个人面板、仓库主页查看到你的提交记录。

在新建仓库时,如果在 Gitee 平台仓库上已经存在 readme 或其他文件,在提交时可能会存在冲突,这时用户需要选择的是保留线上的文件或者舍弃线上的文件,如果您舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令(默认不推荐该行为):

$ git push origin master -f

如果您选择保留线上的 readme 文件,则需要先执行:

$ git pull origin master

Git常用命令

git clone 克隆

从远程仓库克隆一个版本库到本地

# 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
$ git clone <远程仓库的网址>

# 指定本地仓库的目录
$ git clone <远程仓库的网址> <本地目录>

# -b 指定要克隆的分支,默认是master分支
$ git clone <远程仓库的网址> -b <分支名称> <本地目录>

git status # 查看本地仓库的状态

# 查看本地仓库的状态
$ git status

# 以简短模式查看本地仓库的状态
# 会显示两列,第一列是文件的状态,第二列是对应的文件
# 文件状态:A 新增,M 修改,D 删除,?? 未添加到Git中
$ git status -s

git remote 操作远程库

# 列出已经存在的远程仓库
$ git remote

# 列出远程仓库的详细信息,在别名后面列出URL地址
$ git remote -v
$ git remote --verbose

# 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址>

# 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名>

# 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名>

# 修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>

git branch 操作 Git 的分支命令

# 列出本地的所有分支,当前所在分支以 "*" 标出
$ git branch

# 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
$ git branch -v

# 创建新分支,新的分支基于上一次提交建立
$ git branch <分支名>

# 修改分支名称
# 如果不指定原分支名称则为当前所在分支
$ git branch -m [<原分支名称>] <新的分支名称>
# 强制修改分支名称
$ git branch -M [<原分支名称>] <新的分支名称>

# 删除指定的本地分支
$ git branch -d <分支名称>

# 强制删除指定的本地分支
$ git branch -D <分支名称>

git checkout 检出命令,用于创建、切换分支等

# 切换到已存在的指定分支
$ git checkout <分支名称>

# 创建并切换到指定的分支,保留所有的提交记录
# 等同于 "git branch" 和 "git checkout" 两个命令合并
$ git checkout -b <分支名称>

# 创建并切换到指定的分支,删除所有的提交记录
$ git checkout --orphan <分支名称>

# 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
$ git checkout <文件路径>

git cherry-pick 把已经提交的记录合并到当前分支

# 把已经提交的记录合并到当前分支
$ git cherry-pick <commit ID>

git add 提交文件信息添加到暂存区中

把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交

# 把指定的文件添加到暂存区中
$ git add <文件路径>

# 添加所有修改、已删除的文件到暂存区中
$ git add -u [<文件路径>]
$ git add --update [<文件路径>]

# 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
$ git add -A [<文件路径>]
$ git add --all [<文件路径>]

# 查看所有修改、已删除但没有提交的文件,进入一个子命令系统
$ git add -i [<文件路径>]
$ git add --interactive [<文件路径>]

git commit 将暂存区中的文件提交到本地仓库中

# 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
$ git commit

# 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>"

# 把所有修改、已删除的文件提交到本地仓库中
# 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
$ git commit -a -m "<提交的描述信息>"

# 修改上次提交的描述信息
$ git commit --amend

git fetch 从远程仓库获取最新的版本

从远程仓库获取最新的版本到本地的 tmp 分支上

# 将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名>

# 将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>

git merge 合并分支

# 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>

git diff 比较版本之间的差异

# 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
$ git diff

# 比较暂存区中的文件和上次提交时的差异
$ git diff --cached
$ git diff --staged

# 比较当前文件和上次提交时的差异
$ git diff HEAD

# 查看从指定的版本之后改动的内容
$ git diff <commit ID>

# 比较两个分支之间的差异
$ git diff <分支名称> <分支名称>

# 查看两个分支分开后各自的改动内容
$ git diff <分支名称>...<分支名称>

git pull 从远程仓库获取最新版本并合并到本地

从远程仓库获取最新版本并合并到本地。
首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。

# 从远程仓库获取最新版本。
$ git pull

git push 把本地仓库的提交推送到远程仓库

# 把本地仓库的分支推送到远程仓库的指定分支
$ git push <远程仓库的别名> <本地分支名>:<远程分支名>

# 删除指定的远程仓库的分支
$ git push <远程仓库的别名> :<远程分支名>
$ git push <远程仓库的别名> --delete <远程分支名>

git log 显示提交的记录

# 打印所有的提交记录
$ git log

# 打印从第一次提交到指定的提交的记录
$ git log <commit ID>

# 打印指定数量的最新提交的记录
$ git log -<指定的数量>

git reset 还原提交记录

# 重置暂存区,但文件不受影响
# 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件
# 没有指定 commit ID 则默认为当前 HEAD
$ git reset [<文件路径>]
$ git reset --mixed [<文件路径>]

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
# 相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
$ git reset --soft <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <commit ID>

git revert 生成一个新的提交。

生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。

# 生成一个新的提交来撤销某次提交
$ git revert <commit ID>

git tag 操作标签的命令

# 打印所有的标签
$ git tag

# 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
$ git tag <标签名称> [<commit ID>]

# 添加带有描述信息的附注标签,可以指定之前的提交记录
$ git tag -a <标签名称> -m <标签描述信息> [<commit ID>]

# 切换到指定的标签
$ git checkout <标签名称>

# 查看标签的信息
$ git show <标签名称>

# 删除指定的标签
$ git tag -d <标签名称>

# 将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称>

# 将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> –tags

git mv 重命名文件或者文件夹

# 重命名指定的文件或者文件夹
$ git mv <源文件/文件夹> <目标文件/文件夹>

git rm 删除文件或者文件夹

# 移除跟踪指定的文件,并从本地仓库的文件夹中删除
$ git rm <文件路径>

# 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
$ git rm -r <文件夹路径>

# 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
$ git rm --cached

删除掉本地不存在的远程分支

在本地执行 git branch --all 依然会显示该远程分支,可使用下列的命令进行删除:

# 使用 pull 命令,添加 -p 参数
$ git pull -p

# 等同于下面的命令
$ git fetch -p
$ git fetch --prune origin

恢复删除的分支

  • 1 查看被删除的分支

执行命令: git remote prune --dry-run origin

kch@kch:/home/kch$ git remote prune --dry-run origin
Username for 'http://******': kch
Password for 'http://kuangchunhua@*****': 
修剪 origin
URL:http://****/****.git
 * [将删除] origin/kch
 * [将删除] origin/kch-1217
 * [将删除] origin/kch-1221

被删除的分支是kch

  • 2 找到被删除分支的最后一次提交记录的commit SHA值

    执行命令:git reflog

kch@kch:/home/kch$ git reflog
e525099 HEAD@{0}: commit: ******
27518dc HEAD@{1}: commit: ******
8fd7b99 HEAD@{2}: commit: ******
7c45222 HEAD@{3}: commit: ******
7fb414e HEAD@{11}: checkout: moving from master to kch
7fb414e HEAD@{12}: commit: [******
32278f7 HEAD@{13}: clone: from http://*****/******.git
kch@kch:/home/kch$

最后一次提交的commit SHA值是e525099

  • 3 恢复分支 恢复分支方法有两种

  • 法一、在本地使用命令恢复

    执行命令: git checkout -b kch e525099

  • 法二、在平台上新建branch 根据commit SHA 来恢复
    在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值