Git常用命令

[TOC]

Git教程

  • Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  • Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。

Git安装配置
  • 完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。

在开始菜单里找到"Git"->"Git Bash",会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。

Git工作流程
  1. 克隆工作资源作为工作目录;

  1. 在克隆的资源上添加或修改文件;

  1. 如果有其他人修改了,你可以更新资源;

  1. 在提交前查看修改;

  1. 提交修改;

  1. 在修改完成后,发现错误,可以撤回提交并再次修改提交;

Git工作区
  • 工作区:在电脑里所能看到的目录;

  • 版本库:工作区有一个隐藏目录,.git,这个不算工作区,而是Git的版本库;

  • 暂存区:index,一般存放在.git目录下的index文件中,暂存区有时也叫作索引;

Git创建仓库
  • Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。如下所示,newrepo为所初始化的仓库名称,可自行更改。

git init newrepo	
  • 初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交;下列命令将test.go,myfile文件,所有以py结尾的文件提交到仓库中;注:'初始化项目版本'为提交说明,Linux系统中使用单引号,Windows系统中使用双引号。

git add test.go
git add myfile
git add *.py
git commit -m '初始化项目版本'
  • 配置:git 的设置使用 git config 命令。

#显示当前的配置信息
git config --list
#编辑git配置文件
git config -e			#针对当前仓库
git config -e --global	 #针对系统上所有仓库
#设置提交代码时的用户信息
git config --global user.name "用户名"
git config --global uesr.email 20999@163.com #自行设置更改
Git基础操作
  • Git 常用的是以下 6 个命令:git clonegit pushgit addgit commitgit checkoutgit pull

  • 创建仓库命令

#创建仓库命令
git init <仓库文件名称>		#初始化仓库,后面没文件名的话默认为当前目录下
git clone [url]				#拷贝一份远程仓库,也就是下载一个项目
  • 提交与修改

#将一个或者多个文件添加到暂存区
git add [file1] [file2] ...
#添加指定目录到暂存区,包括子目录
git add [dir]
#添加当前目录下所有文件到暂存区
git add .

#查看仓库当前的状态,显示有变更的文件
git status

#比较文件的不同,即暂存区和工作区的差异
git diff [file]
#显示缓存区和上一次提交(commit)的差异
git diff --cached [file]
#或
git diff --staged [file]
#提交暂存区到本地仓库

git commit -m [备注信息,单引号]
#提交暂存区的指定文件到仓库
git commit [file1] [file2] ... -m [备注信息]
# -a 参数设置修改文件后不需要执行git add命令提交缓存,直接来提交
git commit -a

#git reset命令用于回退版本
git reset [--soft | --mixed | --hard] [head]
#--mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变
git reset [HEAD]
#例子
git reset HEAD^            # 回退所有内容到上一个版本  
git reset HEAD^ hello.go   # 回退 hello.go 文件的版本到上一个版本  
git  reset  052e           # 回退到指定版本
#--soft 参数用于回退到某个版本
git reset --soft HEAD
#例子
git reset --soft HEAD~3	   #回退上上上一个版本
#--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
git reset --hard HEAD
#例子
git reset --hard HEAD~3  		 # 回退上上上一个版本  
git reset –hard bae128  		 # 回退到某个版本回退点之前的所有信息。 
git reset --hard origin/master    # 将本地的状态回退到和远程的一样
  • 注意:**谨慎使用 **–-hard 参数,它会删除回退点之前的所有信息。

HEAD 说明:

  • HEAD 表示当前版本

  • HEAD^ 上一个版本

  • HEAD^^ 上上一个版本

  • HEAD^^^ 上上上一个版本

可以使用 ~数字表示

  • HEAD~0 表示当前版本

  • HEAD~1 上一个版本

  • HEAD^2 上上一个版本

  • HEAD^3 上上上一个版本

  • 以此类推...

  • git reset HEAD 命令用于取消已缓存的内容。

#将文件从暂存区和工作区中删除
git rm <file>
#如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
git rm -f test.py
#如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可
git rm --cached test.go
#可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件
git rm -r *

#移动或重命名一个文件、目录或软连接
git mv [file] [newfile]
#如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数
git mv -f [file] [newfile]
  • 提交日志

#查看提交历史
git log
#以列表形式查看指定文件的历史修改记录
git blame <file>
#我们可以用 --oneline 选项来查看历史记录的简洁的版本
git log --oneline
#也可以用 --reverse 参数来逆向显示所有日志
git log --reverse --oneline
#查找指定用户的提交日志
git log --author=bjb --online -5 #显示5条
#如果你要指定日期,可以执行几个选项:--since 和 --before,但是你也可以用 --until 和 --after, --no-merges 选项以隐藏合并提交
#例子:Git 项目中三周前且在四月十八日之后的所有提交
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
  • 远程操作

#显示所有远程仓库
git remote -v
#例子
git clone https://github.com/tianqixin/runoob-git-test
cd runoob-git-test
git remote -v
#origin  https://github.com/tianqixin/runoob-git-test (fetch)
#origin  https://github.com/tianqixin/runoob-git-test (push)
#origin 为远程地址的别名

#显示远程仓库的信息
git remote show [远程仓库]
#添加远程仓库版本
git remote add [本地版本库] [url]
#删除远程仓库
git remote rm name			#name为仓库名
#修改仓库名
git remote rename old_name new_name
分支管理
  • git的远程操作除了git remote外还有fetch、pull、push,在了解这三个之前,首先要了解git的分支管理和远程仓库。

  • 几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。Git分支实际上是指向更改快照的指针。

  • 有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git从版本控制系统家族里区分出来。

#显示所有分支
git branch
#创建分支
git branch (branchname)
#切换分支
git checkout (branchname) #当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录
#合并分支
git merge (branchname)
#你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支,合并到主分支
#我们也可以使用 git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下
#删除分支
git branch -d (branchname)
  • 在我个人打这些命令的过程中,若分支中的新建文件没有提交到仓库中,则在其他分支中也可见,一旦提交到仓库中,只在该分支可见;

Git标签
  • 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。Git 的标签虽然是版本库的快照,但其实它就是指向某个 commit 的指针。

#创建标签,当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样
git tag -a v1.0
#如果我们忘了给某个提交打标签,又将它发布了,我们可以给它追加标签。例如我们发布了提交 85fc7e7,但是那时候忘了给它打标签
git tag -a v0.9 85fc7e7
#查看所有标签
git tag
#指定标签信息命令
git tag -a <tagname> -m "**标签"
#PRG签名标签命令
git tag -s <tagname> -m "**标签"
Git远程仓库(Github)
  • 远程操作(续)

#从配置好的一个远程仓库提取更新的数据,你可以首先执行
git fetch [仓库名]
#然后你可以执行:
git merge [仓库名]/[分支名]
#以上将服务器上的任何更新合并到你的当前分支

#git pull 命令用于从远程获取代码并合并本地的版本。git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写
git pull <远程主机名> <远程分支名>:<本地分支名>
#将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并
git pull orgin master:brantest
#如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git pull origin master

#git push 命令用于从将本地的分支版本上传到远程并合并
git push <远程主机名> <本地分支名>:<远程分支名>
#如果本地分支名与远程分支名相同,则可以省略冒号
git push <远程主机名> <本地分支名>
#如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数
git push --force origin master
#删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支
git push origin --delete master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值