Git 实用命令总结

初始化一个目录

git init

添加本地修改的文件

git add .

其中.表示添加当前目录下面所有修改&新增的文件,如果想单独add指定目录或文件将.替换成目录或文件地址就可以了

提交更新

git commit -m ‘注释‘

这里的提交是提交到了本地仓库.

删除文件

git rm file/dir

直接使用shell进行rm file操作后版本还需要使用git rm file命令从版本库从删除文件,其中如果是删除目录,需要增加一个-r参数

查看提交历史

git log

git log命令能查看所有版本的提交历史以及每次提交的版本号和注释,并且每次提交都会有一个唯一的版本号。

使用git log --graph能够以’图’的方式更形象的展示提交记录,如果像显示的简洁一点,可以再加一个 –oneline 参数,就能把每一个提交合并到一行显示

HEAD

HEAD是git中一个特殊的指针,指向当前的分支的最新的一个commit,这个概念很重要。 HEAD^表示当前分支的上一个commit版本, HEAD^^表示上上个版本,也可以用HEAD~n进行表示,n代表之前第几个版本

  • 如果本地修改了一些东西,不想要了,可以用命令git reset --hard HEAD恢复到上次提交后的版本。
  • 如果想恢复上上个版本,可以用命令git reset --hard HEAD^^
  • 如果想根据版本号恢复到指定版本可以用命令git reset --hard COMMIT_VERSION.,COMMIT_VERSION表示版本号

使用git rest命令会退版本后再使用git log命令查看提交记录时发现当前版本之后的记录都没有了。如果此时又想恢复到当前版本之后的一个版本,可以用git reflog查看git的每次操作记录,从里面找到版本好,然后重新使用git reset命令就可以进行恢复了

暂存区

也可以称为’工作目录/working directory’上一次提交后的所有更改都被保存在’暂存区’,可以通过git status命令查看当前暂存区中所有的更改,当使用git add/rm 等命令操作时,实际上是对暂存区的操作,当使用git commit命令时,会将暂存区的内容一次性提交到当前分支。

比对文件 git diff

git diff file

可以通过git diff查看一个文件与当前HEAD版本中这个文件内容的区别。

也可以通过git diff COMMIT_VERSION 比对某个版本与当前暂存区文件内容的区别,如果不指定COMMIT_VERSION,默认为HEAD

也可以通过git diff COMMIT_VERSION file比对指定文件某个版本与当前展存区的区别

还可以通过git diff COMMIT_VERSION_1 COMMIT_VERSION_2 比较两个版本之前的区别。同样在后面可以再加一个文件路径,查看指定文件之前的区别

撤销修改

git checkout -- file

注意,一定要使用 – ,如果不使用 – 就代表切换分支

如果在commit之前想要对某个文件进行修改,如果该文件还没被add操作,可以使用git ckeckout -- file命令将文件内容撤销到上一次提交后的内容,也就是HEAD版本的内容,。 如果该文件已经被add了,直接使用checkout,文件回会退到add时的内容,如果连上次add时的内容也需要撤销,可以先使用git reset file命令将文件从暂存区中撤销,此时文件就会回到add前的状态,然后再使checkout进行撤销操作。使用reset命令对暂存区文件进行操作时,会将暂存区文件移除暂存区,而不是会退版本

恢复被删除的文件

git checkout -- file

注意,一定要 – 否则checkout就代表切换分支了。 使用该方法恢复文件的前提是被删除的文件只是本地rm或commit之前,如果文件已经提交了,那么就需要使用git reset 命令进行恢复了。

添加一个远程仓库

git remote add origin remoteRespPath

其中origin是随便定义的,是给远程仓库取个别名,remoteRespPath是远程仓库的地址,可以添加多个远程仓库,保证给远程仓库取的别名不同就可以了

查看远程仓库信息

查看原创仓库名称列表  git remote
查看原创仓库详细信息  git remote -v

push代码到远程仓库

git push remoteRespName localBranch:remoteBranch
eg: git push origin master:master

其中origin为之前添加远程仓库时取的别名,localBranch为本地分支的名称,remoteBranch为远程仓库分支的名称,git push origin master:master 会将本地仓库的master分支push到远程仓库origin的master分支上面去

每次push前最好先pull一下。如果有简单冲突会自动合并,如果有严重冲突,解决冲突后再push,如果其他人在上次pull之后又push了内容上去,那么你这次push将会报错。

从远程仓库push代码到本地仓库

git pull remoteRespName branch
eg: git pull origin master

其中remoteRespName表示仓库别名,branch是分支名称, git pull origin master 会将远程仓库origin的master分支代码pull到本地

clone

git clone remoteResp

remoteResp代表远程仓库的地址,除了在本地初始化一个工程,然后push到远程仓库,也可以通过git clone命令从远程仓库clone一个已存在的工程到本地,当从远程仓库clone工程到本地后,默认在master分支上,并会自动的加上一个名为origin的远程仓库,地址就是clone时远程仓库的地址。

默认只会从远程仓库clone下master分支,如果要切换到其他分支,可以在clone后再使用git checkout -b newBranchName origin/newBranchName命令将远程某个分支也checkout下来。

除了直接将远程分支checkout下来,也可以先在本地创建一个分支git checkout -b branch01,建立好了之后,此时进行pull操作会报错,因为该本地分支还没有关联一个远程仓库的分支,接下来使用git branch --set-upstream-to=origin/branch01 branch01就能够讲本地创建的branch01分支与远程仓库origin下面的branch01分支进行关联起来了,此时就可以进行pull操作了。

创建分支

git branch newBranchName
eg : git branch laibao

上面的命令将会创建一个laibao的分支,创建分支后,你目前还是在当前分支,如果要切换到新分支可以用切换分支命令

切换分支

git checkout branchName
eg : git checkout laibao

上面的命令将会切换到laibao分支上面,接下来可以在新分支上面修改内容,然后本地commit,然后可以通过git push origin laibao:laibao命令将本地laibao分支push到远程仓库中

对于上面两个命令其实可以用一个命令代替git checkout -b newBranchName,表示创建新分支,并切换到这个分支上面

删除分支

git branch -d branchName
上面的命令时删除本地分支,如果该分支还没有被合并,git会提示合并失败,可以使用 -D参数强制删除分支
如果需要将原创仓库中的分支也删除掉可以用 git push remoteRespName --delete branchName 

合并分支

比如要将b分支合并到a分支 <br/>
首先切换到a分支  git checkout a <br/>
然后合并  git merge b <br/>
还可以通过-m参数指定合并备注<br/>
就能完成合并操作了。 <br/>
如果合并冲突了,会提示合并冲突,接下来打开冲突的文件,解决冲突,然后commit。就合并完成了。<br/>
合并分支时一般加上 --no-ff参数,表示不使用 Fast Forward模式,如果不加这个参数,默认使用的就是Fast Forward模式,导致合并后删除原来的分支后,看不出主分支曾经合并过

存档

存档
git stash
查看存档列表
git stash list
恢复存档
git stash apply 存档id
删除存档
git stash drop 存档id
上面的恢复和删除可以用下面的命令合并操作
git stash pop 存档id

当在当前分支工作了一段时间临时需要切换到其他分支,但是当前分支的内容都不能被提交,这个时候可以先使用命令log stash将当前工作目录进行存档,然后checkout到其他分支工作,最后再checkout回来当前分支,再使用log stash list命令查看存档列表,接着使用log stash pop 存档id就能接着之前的内容进行开发了。

如果上面不先存档,也不提交,直接checkout到其他分支,会有问题,要么冲突,要么将当前修改的内容一并带到checkout后的分支了。

忽略指定文件/目录

可以在根目录下添加一个.gitignore文件,文件里面指定要忽略的文件和目录

如:

.idea/*
target
.settings/*
.classpath
.project
.DS_Store
logs
Makefile
*.iml
*/log/*
*.dat

别名 alias

如果某些命令太长了,写起来很麻烦,可以给某些操作起别名,比如git commit 可以用git ci代替就更好了,那么可以为commit设置别名,设置方法为git config --global alias.ci "commit",那么以后就都可以使用git ci代替git commit了, 如果加了–global表示对当前用户有效,配置的别名保存在~/.gitconfig文件中,如果没加–global参数,则只对当前仓库有效,保存在./.git/config文件中。可以直接编辑配置文件添加别名。

添加一些有用的别名:

git config --global alias.unstage ‘reset HEAD‘
// "git unstage xx.txt" 相当于 "git reset HEAD xx.txt" 命令
git config --global alias.ci ‘commit‘
git config --global alias.br ‘branch‘
git config --global alias.co ‘checkout‘
git config --global alias.logx ‘log --color --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘ --abbrev-commit‘
//这个就牛x了,配置好了之后,可以是试试"git logx"命令
时间: 2024-07-30 10:43:00

Git 实用命令总结的相关文章

Git实用命令

1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件: 第二步,使用命令git commit,完成. 3.要随时掌握工作区的状态,使用git status命令. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容. 4.HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_

Git 实用命令详解

查看.添加.提交.删除.找回,重置修改文件 git help <command> # 显示command的help git show # 显示某次提交的内容 git show $id git co -- <file> # 抛弃工作区修改 git co . # 抛弃工作区修改 git add <file> # 将工作文件修改提交到本地暂存区 git add . # 将所有修改过的工作文件提交暂存区 git rm <file> # 从版本库中删除文件 git r

git 实用命令

git 覆盖本地修改 ,git 放弃本地修改,强制更新 git fetch --all git reset --hard origin/master git fetch 只是下载远程的库的内容,不做任何的合并 git reset 把HEAD指向刚刚下载的最新的版本 git branch查看分支 git branch develop 创建develop 分支 git add -A && git commit -m "update modify" && gi

Windows Git Bash命令行下创建git仓库并更新到github

大二的时候就听过老师说有一个叫git的版本管理工具,当时只是听老师说说而已,也没有去使用它,因为当时用过svn,就感觉自己没多少东西需要git管理. 最近几天,我经常在开源中国看别人的帖子,看到别人对git和github这个平台评价如此之高,于是我就下载了一个windows版本的git bash, 一开始使用就被它的速度和实用所折服,于是在我的虚拟Centos 7上也装上了git ,现在我主要利用它帮助我管理一些繁琐的小代码,git这样的工具的魅力还需要我慢慢体会. 现在我就记录一下我在Wind

Git实用记录

一.git命令名词解释 1.添加/跟踪/暂存:添加到本地索引 git add 文件名 2.提交:提交到本地仓库 git commit -m '注释' 3.推送:将提交到本地仓库的所有更新提交到服务器 git push mycode release 4.更新/拉取:将远程最新的仓库或拉到本地,两种方法a) 从远程获取最新版本,不会自动合并(merge): git checkout release git fetch origin release b) 从远程获取最新版本并自动merge: git

你需要知道的12个Git高级命令【转】

转自:http://www.linuxidc.com/Linux/2016-01/128024.htm 众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强大工具.使用Git时常用的命令有pull.commit.push等,貌似很简单.不过,有时你会遇到合并冲突的情况,Git这时会将冲突标记出来,需要你手工来解决.有时,你会不小心将代码提交到错误的分

GDB调试实用命令

个人感觉从windows平台转到linux平台一个不适应的地方就是调试器的使用.因为windows下调试器基本上都依赖快捷键和图像界面来完成操作,就算是windbg这种伪命令行的工具,命令也很简单比较好记. 相比之下GDB属于很复杂的了,网上找到的一些GDB的文章列出的往往都是一些没什么卵用的命令,所以开个帖子记录下常用的命令. 插件安装 1.gdb-peda 这是一个调试时必不可少的神器,github地址在:https://github.com/longld/peda ,它的安装两条简单命令即

git stash 命令

关于git stash命令的使用方法网上一大把,我想记录的是我在使用过程中觉得实用及好用的: 当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,我觉得git stash是一个更加便捷的选择. 步骤如下: 一.添加改动到stash.在原分支 git stash save -a "messeag",网上很多很多资料都没有加 -a 这个option选项,我想他们的代码开发可能都是在原代码上进行修改吧.而对于在项目里加入了代码新文件

什么是git subcommand,如何创建git子命令?

大多数git用户知道如何在git中创建一个alias以便更便利地使用相关命令.很少有人知道至少不会好好利用的是:你实际上可以为Git创建扩展或者plugin,以便上git完成任何你希望完成的工作.这就是Git subcommand! 应该如何创建git子命令呢? 1.创建一个shell或者bash脚本来完成你希望它做的工作: 2.将你的脚本文件命名为git-name,这样name就将成为git name中的子命令了! 3.将该脚本放到/usr/local/bin或其他任何$PATH指定的路径中: