Git常用命令总结

Git常用命令总结

1. git与GitHub

git git是一个版本控制工具,是为了更好好的帮助程序员进行版本控制以及协同开发。
github 是一个面向开源及私有软件项目的托管平台。因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。

2. 一些概念

1. 版本控制

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

  • 本地版本控制
  • 集中化版本控制
  • 分布式版本控制

2. git三种状态

  • 已提交(committed)
    已提交表示数据已经安全的保存在本地数据库中。

  • 已修改(modified)
    已修改表示修改了文件,但 还没保存到数据库中。

  • 已暂存(staged)
    已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次 提交的快照中。

3. 工作区域概念

  • 工作目录
    工作目录是对项目的某个版本独立提取出来的内容。这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

  • 暂存区域
    暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中。有时候 也被称作"索引",不过一般说法还是叫暂存区域。

  • Git仓库
    Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。

3. Git的安装与配置

3.1. 下载Git

可以从网站:https://git-scm.com/downloads 下载相应的安装包。

3.2. 安装Git

安装包直接安装,一步步走即可,会自动配置环境变量,否则自己在path中添加环境变量。

3.3. 定制git环境

git 自带一个git config 的工具来帮助设置git外观和行为的配置变量。这些变量存储在三个不同的位置。

  1. /etc/gitconfig 该文件包含了适用于系统所有用户和所有库的值。
  2. ~/.gitconfig 该文件在用户目录下,是针对用户的配置。
  3. .git/config 该文件在具体项目中的一个隐藏文件夹.git中。是针对该项目的具体配置。

安装好Git后,需要设置自己的用户名和邮箱地址。每次Git提交都会使用该信息。

#设置提交人的信息,只对以后的提交生效,如果没有--global选项,则只是在该项目中生效。
$ git config --global user.name "yourname"
$ git config --global user.email myemail@qq.com

3.4. 设置别名

对于比较复杂的命令,可以设置别名,方便记忆以及操作。对于git commit -m message 来说,该命令显得有些难记,不想敲那么多字,可以通过设置别名来简化命令。

$ git config --global alias.cm 'commit -m'
$ git cm message

配置好设置后,可以在用户目录下的 .gitconfig文件中查看,其中配置如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qrcx2mwM-1573130895932)(./1531186114453.png)]

4. git 基础

4.1 获取git仓库

  1. 在本地的已有项目中导入所有文件到git中。
$ git init
  1. 从git仓库克隆一个项目到本地。
$ git clone URL
  1. git 支持多种协议,https://协议,git://协议,SSH 协议

4.2 查看状态

# 生成一个文件
$ echo "#notes" >> readme.md
$ git status

4.3 追踪文件

# 跟踪新文件,git add 后面如果是路径则递归的追踪
$ git add readme.md 
# 追踪当前路径下所有文件
$ git add .
# 追踪所有文件
$ git add *

4.4 取消暂存文件

有时候不小心多添加(add)了一些文件,想要取消添加,则可以使用以下命令阿里取消暂存文件!

# 取消暂存文件,即不提交该文件
$ git reset HEAD <file>

4.5 移动和删除文件

$ #移除文件 -f 强制删除
$ git rm stdout.log
$ #移动文件(可以用来修改名称)
$ git mv fileFrom fileTo

4.6 查看日志

$ #查看日志
$ git log

4.7 提交更新

$ #提交更新
$ git commit -m "commit message"
$ #只要加上-a选项,git 会自动将已追踪文件暂存并提交,从而跳过 git add这一步。
$ git commit -a -m "commit message"

4.8 撤销操作

#带有 --amend 的命令会尝试重新提交,第二次提交的会覆盖原来的提交信息,最终只有一个提交。
$ git commit --amend

4.9 推送远端

#将本地仓库推送为远程仓库
$ git remote add origin https://github.com/Zeppole/test
#将本地修改推送到远程仓库的master分支
$ git push origin master

4.10 切换分支

# 切换分支
$ git checkout branch-a
# 创建分支并切换
$ git checkout -b branch-b
# 只创建分支,不切换
$ git branch branch-c

4.11 更新分支并合并

# 更新分支
$ git pull origin 当前分支
# 合并分支,将branch-d分支合并到当前分支上
$ git merge branch-d
# 合并后需要推送到远端
$ git push origin 当前branch

4.1.2 拉取远程分支到本地

# 拉取全部远端分支到本地,即更新本地分支为最新内容
$ git fetch
# 更新指定分支到本地
$ git fetch origin 分支名称

git pull 可以理解为 git fetch + git merge
即git fetch 直接拉取分支,git pull 拉取分支并自动合并,git fetch +git merge 有可能会产生冲突,需要手动解决。

4.13 储藏内容

git在当前分支有修改并且未提交的内容时,是不允许切换分支的,但是如果此时并不想将改了一半的内容提交怎么办?可以使用git的储藏功能,将修改内容储藏,这样便可以切换到其他分支,操作完成后在返回到该分支恢复储藏即可。

# 将修改内容储藏,保存当前的工作现场
$ git stash
# 查看现有 stash
$ git stash list
# 恢复储藏内容,并删除该储藏
$ git stash pop stash@{0}

4.14 忽略文件

.gitignore文件,记录着不交由Git来管的文件,即不提交的文件,一般为日志文件,target文件等。
但是在项目初期,并没有创建.gitignore文件,后期发现有些文件根本不需要提交,新创建一个.gitignore文件,或者是在.gitignore文件中后加上的忽略文件,这时候这些文件已经提交了,这时候创建的.gitignore文件规则对于这些 tracked 文件无效。
其实.gitignore文件只会忽略那些没有被 track(追踪)的文件,这时候如果需要取消追踪这些文件,可以执行以下命令,从缓存中删除对该文件的追踪,例如:

$ git rm --cached -r .idea

git rm --cached 与 git rm 的区别
git rm 删除缓存区的文件,同时工作区也不需要这个文件的时候,可以使用 git rm,例如过时的文件
git rm --cached 停止追踪文件,但是工作区还需要这些文件,例如 .idea 文件夹,此时可以使用 git rm --cached 命令

4.15 删除分支

$ git fetch -a 同步远端分支到本地
$ git branch -d <branchname>(删除本地分支)
$ git push origin --delete <branchName>
$ git fetch -p(删除没有对应远端的本地分支)

5. 合并分支时冲突解决

分支之间不要用拷贝的方式来共享文件,如果分支间需要有共享的文件,可以使用merge的方式来合并分支。可是如果多个人对同一个文件的同一个地方进行了修改,则会出现冲突报错,此时需要做的便是解决冲突,重新提交。

5.1 合并分支

$ git merge master(将master合并到当前分支)

5.2 删除冲突

解决冲突问题。如果发现git锁死不能提交,则需要删除记录文件。此步骤不是必须的

$ cd .git
$ rm MERGE_HEAD

5.3 提交

$ git add .
$ git commit -m "合并master,解决冲突"
$ git push origin branch

参考文献:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值