Git命令详解整理

合集下载

git push命令用法

git push命令用法

git push命令用法git push命令用法1. 简介git push是Git中用于将本地的代码推送到远程仓库的命令。

它是Git中最常用的命令之一,具有广泛的应用场景。

2. 基本用法•git push <远程仓库名> <分支名>:将本地指定分支的代码推送到指定的远程仓库。

3. 实例演示1.创建一个新的Git仓库:git init2.添加文件:git add .3.提交文件:git commit -m "Initial commit"4.关联远程仓库:git remote add origin <远程仓库URL>5.将本地代码推送到远程仓库:git push origin master4. 推送指定分支•git push <远程仓库名> <本地分支名>:<远程分支名>:将指定的本地分支推送到指定的远程分支。

5. 实例演示1.创建一个新的Git仓库:git init2.添加文件:git add .3.提交文件:git commit -m "Initial commit"4.关联远程仓库:git remote add origin <远程仓库URL>5.将本地分支develop推送到远程分支feature:git pushorigin develop:feature6. 推送所有分支•git push <远程仓库名> --all:将所有本地分支推送到指定的远程仓库。

7. 实例演示1.创建一个新的Git仓库:git init2.添加文件:git add .3.提交文件:git commit -m "Initial commit"4.关联远程仓库:git remote add origin <远程仓库URL>5.将所有本地分支推送到远程仓库:git push origin --all8. 强制推送•git push <远程仓库名> --force:在需要强制更新远程仓库的情况下使用。

git merge 常用参数

git merge 常用参数

git merge 常用参数一、概述在软件开发过程中,版本控制是一个重要的环节。

而Git作为目前最流行的版本控制工具之一,提供了强大的合并(merge)功能,用于将不同的分支或者提交合并到当前分支。

在进行合并操作时,我们可以使用一些常用的参数来控制合并过程,以达到更灵活、高效的目的。

本文将介绍一些常用的git merge参数及其使用方法。

二、常用参数1. --no-ff该参数用于禁用快进合并(fast-forward merge),即使存在快进合并的条件,也强制进行普通合并。

快进合并是指当前分支所指向的提交是要合并分支的直接祖先,合并后只会移动指针,不会创建新的合并提交。

使用--no-ff参数可以保留合并的历史信息,更清晰地记录分支的合并情况。

2. --ff-only该参数用于限制合并操作只能进行快进合并,如果无法快进合并,则会报错并终止合并操作。

这个参数适用于要求分支合并必须是快进合并的场景,可以避免因普通合并引入不必要的合并提交。

3. --squash该参数用于将多个提交合并为一个新的提交,并且不会创建新的合并提交,只会创建一个普通的提交。

合并后的提交会包含原来多个提交的所有更改内容,但是不会保留原来的提交历史。

使用--squash参数可以将多个相关的提交合并为一个更有意义的提交,提高代码的可读性。

4. --strategy该参数用于指定合并策略,即如何合并不同的提交。

Git提供了多种合并策略,如默认的递归合并策略(recursive merge)、ours合并策略(ours merge)和theirs合并策略(theirs merge)等。

不同的合并策略适用于不同的场景,可以根据实际需求选择合适的策略来进行合并操作。

5. --commit该参数用于在合并完成后自动提交合并结果。

默认情况下,Git会在合并完成后显示合并结果,并要求用户手动提交。

使用--commit 参数可以自动提交合并结果,减少手动操作的繁琐。

Gitpull(拉取)及push(上传)相关命令介绍

Gitpull(拉取)及push(上传)相关命令介绍

Gitpull(拉取)及push(上传)相关命令介绍前⾔:博主最近在学习git命令,因为git是⼀个⾮常好⽤的分布式版本管理⼯具,功能⽐svn强⼤,与SVN不同点是Git去中⼼化,每⼀个分⽀都是⼀个中⼼,并且⽀持本地仓库存储,像如今很多⼤公司都⽤git做版本控制。

话不多说,具体命令整理如下:git拉取远程代码git clone https://xxx.git git拉取远程指定分⽀下代码(-b 分⽀名称)git clone -b v2.8.1 https://xxx.git初始化⼀个本地仓库,在同级⽬录下会出现⼀个隐藏的.git⽂件git init 查看git的配置信息git config -l git配置本地仓库的userName(必须)git config 'Lee' git配置本地仓库的邮箱(必须)gitconfiguser.email'************' 三级⽂件配置路径:.git/config/.gitconfig #当前⽤户⽬录/etc/gitconfig #git安装⽬录本地提交到git索引(缓存)中git add . #把新增的、修改的都加到缓存git add -A #把新增、和修改的、和删除的都加到缓存 本地从缓存中加到⽂件库(repository)中git commit -m '版本描述' #提交到⽂件库本地⼀件提交到⽂件库中git commit -am '版本描述' #⼀步完成提交 查看当前git状态信息(查看是否有⽂件未提交)git statusgit中的三类⽂件被追踪的(tracked):已经加⼊⽂档库不被追踪的(untracked):没有加⼊⽂档库忽略的(ignored):忽略那些不需要管理的⽂件夹或⽂件 git新建忽略⽂件⽬录下建⽴⼀个.gitignore⽂件(可以有多个,影响范围当前⽂件及⼦⽂件)touch .gitignore .gitignore⽂件忽略内容demo# Maven #target/# IDEA #.idea/*.iml# Eclipse #.settings/.classpath.project注意:新建的⼀个忽略⽂件,为什么没有⽣效答:可能是因为你的缓存区已经有忽略的⽂件了,所以需要先清空缓存区⾥的⽂件,重新add和commit操作删除缓存区所有⽂件命令git rm -r --cached . #主要这个点⼀定要写 重新add到缓存区git add . 每⼀次commit都是⼀个提交点,唯⼀标识SHA1的ID,ID可使⽤前4⾄7个数字表⽰查看git的⽇志信息git log给提交点打标签 git tag -a v0.2 4a80f64(提交点SHA1的ID的前7位)git tag -a tagV1 d819565b #提交点SHA1的ID的前7位回车之后会有输⼊tag内容的界⾯,然后像linux⼀样点击 i 编辑输⼊信息后 esc 然后 :wq 保存退出简化git⽇志输出格式git log --oneline显⽰主分⽀和⾃分⽀git⽇志(前⾯会多个星号)git log --oneline --graph查看本地添加了哪些远程分⽀地址git remote查看本地添加了哪些远程分⽀地址(详细)git remote -v删除本地指定的远程地址git remote remove origin 添加远程地址git remote add origin https://xxxxxxxxxxxx.git 分⽀:分⽀意味着你可以从开发主线(master)上分离开,在不影响主线的同事继续⼯git branch #列出当前开发所有分⽀(默认会有master)git branch king #创建⼀个king的分⽀(最新提交点)git branch king 提交点 # 创建⼀个king的分⽀(指定提交点)git branch -d -r <branchname> # 删除远程分⽀,删除后还需推送到服务器git push origin:<branchname> # 删除后推送⾄服务器git branch -d king #删除king分⽀git checkout king #切换⾄king分⽀git checkout mastergit merge king #合并分⽀king和主⼲master,合并后的提交点属于主⼲master本地分⽀重命名git branch -m <oldbranch> <newbranch> #重命名本地分⽀ 查看本地和远程的所有分⽀git branch -a # 查看本地和远程的所有分⽀ 查看远程所有分⽀git branch -r # 查看远程所有分⽀重命名远程分⽀:1、删除远程待修改分⽀2、push本地新分⽀到远程服务器head节点代表最新的commit 显⽰head 信息git show HEAD回退:git reset 选项提交点(选项:--hard表⽰全恢复提交点:可⽤ID或标签)git reset --hard v0.1查询所有提交点git reflog #回退后需要反悔的话,需要通过此命令查找到所有操作的提交点合并分⽀的起始点(不推荐)git checkout mastergit rebase reking #合并分⽀reking和主⼲master,合并后的提交点属于主⼲masterclone 克隆远程⽂件git clone "远程地址" "本地⽂件名称" push 推送本地修改分⽀⾄远程git仓库git push -u origin feature-wxDemo fetch与pullfetch是将远程主机的最新内容拉到本地,不进⾏合并git fetch origin master pull 则是将远程主机的master分⽀最新内容拉下来后与当前本地分⽀直接合并 fetch+mergegit pull origin master如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。

Git命令diff格式详解

Git命令diff格式详解

Git命令diff格式详解diff是Unix系统的⼀个很重要的⼯具程序。

它⽤来⽐较两个⽂本⽂件的差异,是代码版本管理的基⽯之⼀。

你在命令⾏下,输⼊: $ diff <变动前的⽂件> <变动后的⽂件>diff就会告诉你,这两个⽂件有何差异。

它的显⽰结果不太好懂,下⾯我就来说明,如何读懂diff。

⼀、diff的三种格式由于历史原因,diff有三种格式: * 正常格式(normal diff) * 上下⽂格式(context diff) * 合并格式(unified diff)我们依次来看。

⼆、⽰例⽂件为了便于讲解,先新建两个⽰例⽂件。

第⼀个⽂件叫做f1,内容是每⾏⼀个a,⼀共7⾏。

a a a a a a a第⼆个⽂件叫做f2,修改f1⽽成,第4⾏变成b,其他不变。

a a ab a a a三、正常格式的diff现在对f1和f2进⾏⽐较: $ diff f1 f2这时,diff就会显⽰正常格式的结果: 4c4 < a --- > b第⼀⾏是⼀个提⽰,⽤来说明变动位置。

4c4它分成三个部分:前⾯的"4",表⽰f1的第4⾏有变化;中间的"c"表⽰变动的模式是内容改变(change),其他模式还有"增加"(a,代表addition)和"删除"(d,代表deletion);后⾯的"4",表⽰变动后变成f2的第4⾏。

第⼆⾏分成两个部分。

< a前⾯的⼩于号,表⽰要从f1当中去除该⾏(也就是第4⾏),后⾯的"a"表⽰该⾏的内容。

第三⾏⽤来分割f1和f2。

---第四⾏,类似于第⼆⾏。

> b前⾯的⼤于号表⽰f2增加了该⾏,后⾯的"b"表⽰该⾏的内容。

最早的(即AT&T版本的Unix),使⽤的就是这种格式的diff。

四、上下⽂格式的diff上个世纪80年代初,加州⼤学伯克利分校推出BSD版本的Unix时,觉得diff的显⽰结果太简单,最好加⼊上下⽂,便于了解发⽣的变动。

git checkout 命令详解

git checkout 命令详解

git checkout 命令详解在日常的git操作中,git checkout——检出,是我们的常用命令。

最为常用的两种情形是创建分支和切换分支。

在下面的命令中,使用了一些简写,在这里说明一下:git st # git statusgit ci # git commitgit br # git branchgit co # git checkoutgit mg # git mergegit line # git log --oneline当然,你也可以直接在git中敲命令,将这些简写添加到git 配置中git config --global -e然后,可以插入下面的配置:[alias]st = statusco = checkoutbr = branchmg = mergeci = commitmd = commit --amenddt = difftoolmt = mergetoollast = log -1 HEADcf = configline = log --onelinelatest = for-each-ref --sort=-committerdate--format='%(committerdate:short) %(refname:short)[%(committername)]'ls = log--pretty=format:\"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]\" --decorate --date=short hist = log--pretty=format:\"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad\" --topo-order --graph--date=shorttype = cat-file -tdump = cat-file -p这样,你也就可以使用这些简写的命令咯。

git常用命令解释

git常用命令解释

GIT ANG REPOUSAGE1 git command1.1 git add∙git add . #将文件先暂存到staging area, stages new and modified, without deleted∙git add -A #states all∙git add -u #states modified and deleted, without new∙git add -i #进入互动模式∙git add filename #新增一个文件∙git add modify-file #修改过得文档也要加add,不然在commit时要加-a 1.2 git rm #删除文件∙git rm filename1.3 git mv #修改文件名,或搬移目录∙git mv filename newfilename1.4 git status #查看状态1.5 git commit∙git commit∙git commit -m 'commit message'∙git commit -a -m "message"∙git commit -a -v #-v查看修改的内容1.6 git branch∙git branch #列出所有的分支∙git branch new-branch #产生新的分支∙git branch new-branch master #由master产生新的分支∙git branch -d branch #删除分支∙git branch -D branch #强制删除分支∙git checkout -b new-branch #产生新分支并切换过去∙git branch -r #列出所有repository branch∙git branch -a #列出所有分支1.7 git checkout∙git checkout branch-name #切换到branch-name∙git checkout master #切换到master∙git checkout -b new-branch master #从master建立新的分支,并切换过去∙git checkout -b new-branch #由当前分支建立新分支∙git checkout -b new-branch origin #由origin建立分支∙git checkout filename #还原状态到repository状态∙git checkout HEAD . #将所有文件都checkout出来∙git checkout xxxx . #xxxx是commit的编号的前四位,将xxxx编号的版本checkout出来∙git checkout – * #恢复上一次commit的状态1.8 git diff∙git diff master #与master对比看哪些文件不同∙git diff –cached #比较staging area与repository∙git diff tag1 tag2 #tag1与tag2比较∙git diff tag1:file1 tag2:file2 #tag1的file1与tag2的file2比较∙git diff #当前与staging area比较∙git diff HEAD #当前与repository比较∙git diff new-brach #当前与new branch的比较∙git diff –stat1.9 git tag∙git tag v1 ebff #为commit ebff810c462234433434323334343设置标记v1 ∙git tag 版本1 ebff #tag可以为中文∙git tag -d 版本1 #删除标记版本11.10 git log∙git log #列出所有log∙git log –all∙git log -p #列出log及修改的内容∙git log -p filename #将filename的log及修改内容列出来∙git log –name-only #列出哪些文件被修改∙git log –stat –summary #列出各个版本间的改动及行数∙git log filename #这个文件的所有log∙git log directory #这个目录的所有log∙git log -S'FUNC()‘ #列出由FUNC()这个字符串的log∙git log –no-merges #不要列出merge的log∙git log –since="2 weeks ago" #列出最后两周的log∙git log –pretty=oneline∙git log –pretty=short1.11 git show∙git show ebff #显示commit ebff810xxxxxxxxxxx的内容∙git show v1 #显示tag v1的修改内容∙git show v1:hello.txt #显示tag:v1的hello.txt文件修改内容∙git show HEAD #当前版本的修改文件∙git show HEAD^ #前一版本所有修改的文件∙git show HEAD~4 #前4版本的修改文件1.12 git reset∙git reset –hard HEAD^ #还原到前一版本∙git reset –soft HEAD~31.13 git grep∙git grep "hello" v1 #查找tag:v1中是否由“hello"字符串∙git grep "hello"1.14 git stash∙git stash #放进暂存区∙git stash list #列出暂存区的文件∙git stash pop #取出最新的一笔,并移除∙git stash apply #取出但不移除∙git stash clear #清除暂存区1.15 git merge∙git merge #合并1.16 git blame∙git blame filename #列出此文件所有commit的记录1.17 git ls-files∙git ls-files -d #查看已删除的文件∙git ls-files -d | xargs git checkout – #将已删除的文件还原1.18 git revert∙git revert HEAD #回到前一此commit的状态∙git revert HEAD^ #回到上上一次的状态1.19 git remote∙git remote∙git remote add new-branch /project.git #增加远程repository的branch∙git remote show #列出现在由多少repository∙git remote rm new-branch #删除服务器上的新分支∙git remote update #更新所有repository branch1.20 git fetch∙git fetch origin1.21 git push∙git push origin:heads/xxx-branch2 repo command2.1 repo init∙repo init -u URL #在当前目录安装repo,该命令创建一个.repo文件夹,文件夹中包含一些git仓库,这些仓库包含着repo源代码何manifest文件。

totoisegit 讲解 -回复

totoisegit 讲解-回复什么是Git?Git是一个开源的分布式版本控制系统,最初由林纳斯·托瓦兹(Linus Torvalds)于2005年创造。

它被设计为适用于大型项目并具有速度、数据完整性和支持分布式非线性工作流等特点。

Git不仅可以用于个人项目的版本控制,还可以用于团队协作开发。

为什么选择Git?选择Git的原因有很多。

首先,Git有很高的速度和性能。

与其他版本控制系统相比,Git在文件的提交、分支的创建与切换以及合并等操作上具有出色的性能。

其次,Git具有分布式的特性。

每个开发者都可以在本地拥有一个完整的代码仓库,不需要依赖网络连接。

这使得开发者可以在没有网络的情况下进行工作,以及方便地进行不同分支的切换和合并。

此外,Git具有强大的分支管理能力,可以轻松地创建、切换、合并和删除分支,使得团队成员可以更加灵活地开发和合作。

Git的基本工作原理是什么?Git的基本工作原理是基于文件快照(snapshot)的版本控制。

简单来说,Git将每个文件的快照保存在一个远程或本地的仓库中。

在进行版本提交(commit)时,Git会保存当前所有文件的快照,并生成一个指向该快照的提交对象(commit object)。

在进行版本切换(checkout)时,Git会将检出的版本快照恢复到工作目录中。

这种基于快照的方式相比于其他系统的差异存储方法(delta storage),可以提供更好的性能和可靠性。

Git如何使用?使用Git需要掌握一些基本的操作命令。

下面是一些常用的Git命令:1. git init:初始化一个Git仓库。

2. git add:将文件添加到暂存区。

3. git commit:从暂存区提交文件到版本库。

4. git clone:克隆一个远程仓库到本地。

5. git pull:从远程仓库拉取最新的代码。

6. git push:将本地提交推送到远程仓库。

7. git branch:创建、切换、合并和删除分支。

git分支原理命令图文解析

本地分支解析git 通过可变指针来实现对提交数据的历史版本的控制,每当我们提交新的更新,当前分支(设为master)则指向最后一个提交更新A,而最后一个提交对象则存在一个指针指向前一次的提交更新Q。

如果我们创建一个新的分支,child,它和master共同指向A,这时,如果我们向child分支提交更新B,我们会发现child 指向B,而master依然指向A。

无论我们在child分支进行了任何开发,只要回到master分支,就能恢复到更新A的数据状态了。

在图片里,我们还注意到有一个head指针,一般来说,它会指向我们目前所在的工作分支。

现在它指向了我们的master分支,意思是master是我们目前的工作分支。

一旦提交更新,就会在master分支上提交。

现在,让我们看看与git 分支有关的操作命令:1. git branch [option] [name]如果不使用任何参数,它可以用来查看所有的分支,而在分支名前有*标记的则为主分支,如果加上name为创建新分支,,如git branch child,则会创建一个名为child 的分支,此外,它有一些常用的参数:2. git checkout [name]切换到对应的分支,对于上图,如果我们是使用git checkout child,我们的head 指针就会指向child分支了。

这时候,如果我们提交新的更新D,我们会发现:我们的D指向C,而C依然指向A,也就是说,以后我们在child分支上做的任何更新,都不会对master分支所在的之路造成任何影响!一旦使用了checkout命令,我们还会发现,不仅head指针会指向新的分支,而且当前工作目录中的文件也会换成了新分支对应的文件了。

此外,我们还可以使用git checkout -b [name]命令,它会新建一个分支,并自动将当前的工作目录切换到该分支上。

3. git merge [name]合并分支,有的时候,我们创建次要分支,可能是为了修改原有程序的bug,或为了拓展新的功能,这时候如果我们想把次要分支的修改何并进主分支中,我们可以使用git merge命令来实现。

gitlab维护命令整理

Gitlab命令整理目录1启停命令 (3)1.1查看状态 (3)1.2启动31.3停止31.4重启32备份 (3)3修改配置文件 (4)4日志查看 (4)5监控 (4)1启停命令1.1查看状态sudo gitlab-ctl status正常情况下:[root@testserver09 ~] # gitlab-ctl statusrun: gitaly: (pid 18233) 107277s; run: log: (pid 771) 20516246srun: gitlab-monitor: (pid 18244) 107276s; run: log: (pid 919) 20516243s run: gitlab-workhorse: (pid 18216) 107284s; run: log: (pid 756) 20516246s run: logrotate: (pid 21536) 2872s; run: log: (pid 754) 20516246s run: nginx: (pid 18258) 107276s; run: log: (pid 755) 20516246srun: node-exporter: (pid 18261) 107276s; run: log: (pid 757) 20516246s run: postgres-exporter: (pid 18281) 107276s; run: log: (pid 769) 20516246srun: postgresql: (pid 17338) 107415s; run: log: (pid 768) 20516246s run: prometheus: (pid 18292) 107275s; run: log: (pid 767) 20516246s run: redis: (pid 17340) 107414s; run: log: (pid 766) 20516246srun: redis-exporter: (pid 18299) 107275s; run: log: (pid 920) 20516243s run: sidekiq: (pid 18307) 107274s; run: log: (pid 770) 20516246s run: unicorn: (pid 18317) 107274s; run: log: (pid 784) 20516246s有时候会出现nginx进程没有的情况,具体解决方案后期补充1.3停止2备份3修改配置文件4日志查看# 查看所有日志sudo gitlab-ctl tail# 查看nginx 访问日志sudo gitlab-ctl tail nginx/gitlab_acces.log # 查看postgresql 日志sudo gitlab-ctl tail postgresql也可直接查看文件/var/log/gitlab/nginx/error.log/var/log/gitlab/nginx/gitlab_access.log5监控/var/log/gitlab/gitlab-monitor/current。

git reset -keep 解释 -回复

git reset -keep 解释-回复git reset keep 是Git 的一个命令,它用于撤销已经提交的代码,同时保留修改。

在这篇文章中,我们将详细介绍git reset keep 命令的使用方法和功能。

我们将分为以下几个部分进行讨论:第一部分:什么是Git?Git 是一个开源的分布式版本控制系统,它的设计目标是为了更好地管理大型项目的源代码。

Git 的主要功能包括代码版本控制、代码合并和分支管理等。

Git 提供了一系列命令,方便开发者对源代码进行管理和维护。

第二部分:什么是git reset 命令?git reset 是Git 中的一个重要命令,它用于重置提交记录或回退到过去的一个提交。

git reset 命令有几种不同的模式,包括mixed、soft 和hard。

其中,mixed 模式是git reset 命令的默认模式。

在使用git reset 命令时,可以选择目标提交的引用或提交哈希值。

第三部分:git reset keep 的功能和用法git reset keep 是git reset 命令的一个选项,它的作用是撤销已经提交的代码,并保留修改。

具体来说,它可以将当前分支的HEAD 指针和索引重置到指定的提交,但不会改变工作目录中的文件。

这意味着已提交的代码将被移除,但修改的内容将被保留在工作目录中,以便进行进一步的编辑或重新提交。

使用git reset keep 命令的基本格式如下:git reset keep <commit>其中,`<commit>` 可以是任何有效的提交引用,比如提交哈希值、分支名称或标签名称等。

第四部分:git reset keep 的应用场景git reset keep 命令适用于以下几种情况:1. 撤销错误的提交:在开发过程中,有时会不小心提交了错误的代码或不完整的功能。

使用git reset keep 命令可以撤销这些提交,保留修改,并重新提交正确的代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020-7-4 Git命令详解蝌蚪成长记目录Git 命令详解 (3)1. 新建代码库 (3)2. 配置 (4)3. 增加/删除文件 (4)4. 代码提交 (6)5. 分支 (7)6. 标签 (9)7. 查看信息 (10)8. 远程同步 (13)9. 撤销 (14)10. 其他 (15)Git 命令详解Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下:关于git,首先需要了解几个名词,如下:Workspace //工作区Index / Stage //暂存区Repository //仓库区(或本地仓库)Remote //远程仓1.新建代码库// 在当前目录新建一个Git代码库$ git init// 新建一个目录,将其初始化为Git代码库$ git init [project-name]// 下载一个项目和它的整个代码历史$ git clone [url]2.配置Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

// 显示当前的Git配置$ git config --list// 编辑Git配置文件$ git config -e [--global]// 设置提交代码时的用户信息$ git config [--global] "[name]"$ git config [--global] user.email "[email address]"3.增加/删除文件// 添加指定文件到暂存区$ git add [file1] [file2] ...// 添加指定目录到暂存区,包括子目录$ git add [dir]// 添加当前目录的所有文件到暂存区$ git add .// 添加每个变化前,都会要求确认// 对于同一个文件的多处变化,可以实现分次提交$ git add -p// 删除工作区文件,并且将这次删除放入暂存区$ git rm [file1] [file2]// 停止追踪指定文件,但该文件会保留在工作区$ git rm --cached [file]// 改名文件,并且将这个改名放入暂存区$ git mv [file-original] [file-renamed]4.代码提交// 提交暂存区到仓库区$ git commit -m [message]// 提交暂存区的指定文件到仓库区$ git commit [file1] [file2] ... -m [message]// 提交工作区自上次commit之后的变化,直接到仓库区$ git commit -a// 提交时显示所有diff信息$ git commit -v// 使用一次新的commit,替代上一次提交// 如果代码没有任何新变化,则用来改写上一次commit的提交信息$ git commit --amend -m [message]// 重做上一次commit,并包括指定文件的新变化$ git commit --amend [file1] [file2]5.分支// 列出所有本地分支$ git branch// 列出所有远程分支$ git branch -r// 列出所有本地分支和远程分支$ git branch -a// 新建一个分支,但依然停留在当前分支$ git branch [branch-name]// 新建一个分支,并切换到该分支$ git checkout -b [branch]// 新建一个分支,指向指定commit$ git branch [branch] [commit]// 新建一个分支,与指定的远程分支建立追踪关系$ git branch --track [branch] [remote-branch]// 切换到指定分支,并更新工作区$ git checkout [branch-name]// 切换到上一个分支$ git checkout -// 建立追踪关系,在现有分支与指定的远程分支之间$ git branch --set-upstream [branch] [remote-branch] // 合并指定分支到当前分支$ git merge [branch]// 选择一个commit,合并进当前分支$ git cherry-pick [commit]// 删除分支$ git branch -d [branch-name]// 删除远程分支$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]6.标签// 列出所有tag$ git tag// 新建一个tag在当前commit$ git tag [tag]// 新建一个tag在指定commit$ git tag [tag] [commit]// 删除本地tag$ git tag -d [tag]// 删除远程tag$ git push origin :refs/tags/[tagName] // 查看tag信息$ git show [tag]// 提交指定tag$ git push [remote] [tag]// 提交所有tag$ git push [remote] --tags// 新建一个分支,指向某个tag$ git checkout -b [branch] [tag]7. 查看信息// 显示有变更的文件$ git status// 显示当前分支的版本历史$ git log// 显示commit历史,以及每次commit发生变更的文件$ git log --stat// 搜索提交历史,根据关键词$ git log -S [keyword]// 显示某个commit之后的所有变动,每个commit占据一行$ git log [tag] HEAD --pretty=format:%s// 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件$ git log [tag] HEAD --grep feature// 显示某个文件的版本历史,包括文件改名$ git log --follow [file]$ git whatchanged [file]// 显示指定文件相关的每一次diff$ git log -p [file]// 显示过去5次提交$ git log -5 --pretty --oneline// 显示所有提交过的用户,按提交次数排序$ git shortlog -sn// 显示指定文件是什么人在什么时间修改过$ git blame [file]// 显示暂存区和工作区的差异$ git diff// 显示暂存区和上一个commit的差异$ git diff --cached [file]// 显示工作区与当前分支最新commit之间的差异$ git diff HEAD// 显示两次提交之间的差异$ git diff [first-branch]...[second-branch]// 显示今天你写了多少行代码$ git diff --shortstat "@{0 day ago}"// 显示某次提交的元数据和内容变化$ git show [commit]// 显示某次提交发生变化的文件$ git show --name-only [commit]// 显示某次提交时,某个文件的内容$ git show [commit]:[filename]// 显示当前分支的最近几次提交$ git reflog8. 远程同步# 下载远程仓库的所有变动$ git fetch [remote]# 显示所有远程仓库$ git remote -v# 显示某个远程仓库的信息$ git remote show [remote]# 增加一个新的远程仓库,并命名$ git remote add [shortname] [url]# 取回远程仓库的变化,并与本地分支合并$ git pull [remote] [branch]# 上传本地指定分支到远程仓库$ git push [remote] [branch]# 强行推送当前分支到远程仓库,即使有冲突$ git push [remote] --force# 推送所有分支到远程仓库$ git push [remote] --all9. 撤销// 恢复暂存区的指定文件到工作区$ git checkout [file]// 恢复某个commit的指定文件到暂存区和工作区$ git checkout [commit] [file]// 恢复暂存区的所有文件到工作区$ git checkout .// 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变$ git reset [file]// 重置暂存区与工作区,与上一次commit保持一致$ git reset --hard// 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变$ git reset [commit]// 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致$ git reset --hard [commit]// 重置当前HEAD为指定commit,但保持暂存区和工作区不变$ git reset --keep [commit]// 新建一个commit,用来撤销指定commit// 后者的所有变化都将被前者抵消,并且应用到当前分支$ git revert [commit]// 暂时将未提交的变化移除,稍后再移入$ git stash$ git stash pop10. 其他// 生成一个可供发布的压缩包$ git archive。

相关文档
最新文档