Git 19个常用的命令
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命令详解
一、Git 常用命令速查git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释git remote add origin git@192.168.1.119:ndshowgit push origin master将文件给推到服务器上git remote show origin 显示远程库origin里的资源git push origin master:developgit push origin master:hb-dev 将本地库与服务器上的库进行关联git checkout --track origin/dev 切换到远程dev分支git branch -D master develop 删除本地库developgit checkout -b dev 建立一个新的本地分支devgit merge origin/dev 将分支dev与当前分支进行合并git checkout dev 切换到本地dev分支git remote show 查看远程库git add .git rm 文件名(包括路径) 从git中删除指定文件git clone git:///schacon/grit.git 从服务器上将代码给拉下来git config --list 看所有用户git ls-files 看已经被提交的git rm [file name] 删除一个文件git commit -a 提交当前repos的所有的改变git add [file name] 添加一个文件到git indexgit commit -v 当你用-v参数的时候可以看commit的差异git commit -m "This is the message describing the commit" 添加commit信息git commit -a -a是代表add,把所有的change加到git index里然后再commit git commit -a -v 一般提交命令git log 看你commit的日志git diff 查看尚未暂存的更新git rm a.a 移除文件(从暂存区和工作区中删除)git rm --cached a.a 移除文件(只从暂存区中删除)git commit -m "remove" 移除文件(从Git中删除)git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)git diff --cached 或$ git diff --staged 查看尚未提交的更新git stash push 将文件给push到一个临时空间中git stash pop 将文件从临时空间pop下来---------------------------------------------------------git remote add origin git@:username/Hello-World.gitgit push origin master 将本地项目给提交到服务器中-----------------------------------------------------------git pull 本地与服务器端同步-----------------------------------------------------------------git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。
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(上传)相关命令介绍前⾔:博主最近在学习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 命令清单 - 阮一峰的网络日志
三、增加/删除文件
# 添加指定文件到暂存区 $ 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]
十、其他
# 生成一个可供发布的压缩包 $ git archive
一、新建代码库
# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project‐name] # 下载一个项目和它的整个代码历史 $ git clone [url]
Байду номын сангаас
二、配置
Git的设置文件为 .gitconfig ,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
常用 Git 命令清单
作者: 阮一峰 日期: 2015年12月 9日 我每天使用 Git ,但是很多命令记不住。 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。
下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。
Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库
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文件。
git常用语句
git常用语句
1. git init - 创建一个新的本地仓库
2. git clone [URL] - 克隆一个远程仓库到本地
3. git add [文件名] - 将文件添加到暂存区
4. git commit -m "提交信息" - 将暂存区的文件提交到本地仓库
5. git push origin [分支名] - 将本地仓库的文件推送到远程仓库
6. git pull origin [分支名] - 从远程仓库拉取最新的文件到本地仓库
7. git branch - 查看当前分支
8. git branch [分支名] - 创建一个新的分支
9. git checkout [分支名] - 切换到指定的分支
10. git merge [分支名] - 合并指定分支到当前分支
11. git status - 查看当前文件状态
12. git log - 查看提交历史
13. git remote add origin [远程仓库URL] - 添加远程仓库地址
14. git remote -v - 查看当前仓库关联的远程仓库地址
15. git diff - 查看当前文件与上次提交的差异
16. git reset [commit] - 撤销提交
17. git stash - 将当前修改的文件暂存起来
18. git stash pop - 恢复最近一次暂存的文件修改
19. git checkout -- [文件名] - 撤销对文件的修改
20. git remote update origin --prune - 清理远程仓库中已删除的分支信息。
git pull命令用法
git pull命令用法
git pull命令用于从远程仓库获取最新的版本并合并到本地仓库中。
该命令的基本用法是在本地仓库中运行git pull命令,它会自动从与当前分支关联的远程仓库中获取最新的提交,并尝试将其合并到当前分支中。
除了基本用法之外,git pull命令还有一些选项和参数可以用来定制其行为。
比如,你可以使用--rebase选项来在拉取远程更新时使用变基操作而不是合并操作,这有助于保持提交历史的清晰和整洁。
另外,你还可以使用--no-commit选项来在拉取远程更新后不自动创建合并提交,这样可以让你在合并之前进行一些修改或者审查。
此外,git pull命令还可以指定远程仓库的名称和分支名称,比如git pull origin main,这样可以从名为origin的远程仓库的main分支中获取最新的提交并合并到当前分支中。
总之,git pull命令是一个非常常用的Git命令,它可以帮助我们将远程仓库的更新快速合并到本地仓库中,从而保持代码的最
新状态并与团队成员协作开发。
希望这个回答能够帮助你理解git pull命令的用法。
git入门(常用命令操作)
Page 23
本地版本控制 04 Local Version Control
Page 24
4.1 添加修改
· 如图给 helloworld.cpp 添加一行文本
* Git 已追踪文件的图标会随着工作区状态的改变而改变
Page 25
4.1 添加修改
· 使用 git status 命令查看当前仓库工作区的状态
Page 4
1.2 集中式版本控制系统(CVCS)
· 集中式版本控制系统(CVCS): 这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的 集中管理服务器,保存所有文件的修订版本,而协同工作的开发人员都通过 客户端连到这台服务器,取出最新的文件或者提交更新。 这么做最显而易见的缺点是中央服务器的单点故障。如果宕机一小时, 那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务 器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就还是会有丢失数 据的风险,最坏的情况是彻底丢失整个项目的所有历史更改记录。
Page 35
4.4 撤销修改
撤销修改分为三种情况: · 仅仅修改了工作区内容,未添加到暂存区 · 修改了工作区内容并且添加到暂存区,但未提交修改 · 修改被添加到暂存区并且提交了修改
Page 36
4.4 撤销修改
情况一: 仅仅修改了工作区内容,未添加到暂存区(没有经过 add 和 commit 的修改),如图
* --global 表示设置的范围(系统,全局,项目)
· 修改前需要先使用 --unset 参数清空需要修改的设置 $ git config --unset --global
Page 15
2.1 Git 的帮助与初始化
git pull用法
git pull用法一、概述Git pull是Git中常用的命令之一,它可以将远程仓库中的代码更新到本地仓库中,使本地仓库与远程仓库保持同步。
在团队协作开发过程中,经常需要使用git pull命令来获取最新的代码。
二、语法git pull [options] [<repository> [<refspec>...]]三、参数说明1. options:可选参数,用于指定git pull命令的行为。
2. repository:可选参数,用于指定要从哪个远程仓库拉取代码,默认为origin。
3. refspec:可选参数,用于指定要拉取哪些分支或标签,默认为当前分支。
四、常用选项1. --rebase:将本地修改合并到拉取的代码后面。
2. --no-rebase:不将本地修改合并到拉取的代码后面。
3. --ff-only:只允许快进合并(Fast-Forward)。
4. --no-ff:不允许快进合并。
5. --squash:将多次提交压缩成一次提交。
6. --no-squash:不压缩多次提交。
五、示例1. git pull origin master:从远程仓库origin的master分支上拉取最新代码到当前分支。
2. git pull --rebase origin master:从远程仓库origin的master分支上拉取最新代码到当前分支,并将本地修改合并到拉取的代码后面。
3. git pull --no-rebase origin master:从远程仓库origin的master分支上拉取最新代码到当前分支,不将本地修改合并到拉取的代码后面。
4. git pull --ff-only origin master:从远程仓库origin的master分支上拉取最新代码到当前分支,只允许快进合并。
5. git pull --no-ff origin master:从远程仓库origin的master分支上拉取最新代码到当前分支,不允许快进合并。
Git常用命令
后面可以跟目录
Git简单介绍(10)
Git remote - 用于管理远程仓库
常用的 $git remote -v
$git remote add center ssh://benn@192.168.1.11/git_repo/linux2.6.36.git $git remote rm center $git remote show center
Git简单介绍(19)
Git apply
略
Git简单介绍(20)
Git format-patch
略
Git简单介绍(21)
Git am
略
Git web界面
浏览http://192.168.1.11/git,简单介绍下
举例1
Intro-to-git.pdf P194~251
举例2
A10 Linux BSP使用
1. 获取repo工具
2. 获取A10配置文件 $repo/repo init -u git://192.168.1.11/manifest.git -m sun4i.xml
用浏览器打开http://192.168.1.11/git,进入 manifest.git的tree页面,可查看配置文件
Git add - 把文件添加到index表中
常用的: $git add . $git add file1 file2
Committing
Staging
Git简单介绍(4)
Git status – 查看当前工作目录的状态
当前工作目录与HEAD的比较 $git status
Git简单介绍(5)
Git的常用命令
Git的常⽤命令Git常⽤命令汇总以及其它相关操作⼀、常⽤的git命令--⽂件⽬录操作命令mkdir * 创建⼀个空⽬录 *指⽬录名pwd显⽰当前⽬录的路径。
cat * 查看*⽂件内容git rm * 删除**⽂件--git初始化操作git init 把当前的⽬录变成git仓库,⽣成隐藏.git⽂件。
git remote add origin url 把本地仓库的内容推送到GitHub仓库。
git clone git@url/test.git 从远程库克隆git add * 把x⽂件添加到暂存区去。
git commit –m "*"提交⽂件 –m 后⾯的是注释。
--git 克隆分⽀git clone xxx.git 最简单直接的命令git clone xxx.git "指定⽬录" clone到指定⽬录git clone -b branchname xxx.git clone时创建新的分⽀替代默认Origin HEAD(master)--clone 远程分⽀ git clone 命令默认的只会建⽴master分⽀,如果你想clone指定的某⼀远程分⽀(如:dev)的话,可以如下: 1. 查看所有分⽀(包括隐藏的) git branch -a 显⽰所有分⽀ * masterremotes/origin/HEAD -> origin/masterremotes/origin/devremotes/origin/master2. 在本地新建同名的("dev")分⽀,并切换到该分⽀git checkout -t origin/dev#该命令等同于:git checkout -b dev origin/dev--查看命令git status 查看仓库状态git diff * 查看X⽂件修改了那些内容git log 查看历史记录git reflog 查看历史记录的版本号id(记录你的每⼀次命令,不论是否提交)git log --pretty=oneline 如果信息量太多可以进⾏⽐较好的列表显⽰--版本回退git reset –hard HEAD^ 回退到上⼀个版本git reset --hard HEAD~第⼏个如果想回退到第3个版本,使⽤git reset –hard HEAD~3git reset --hard 057d 回退到某⼀个具体的版本号--撤销修改git checkout file-name 恢复某个已修改的⽂件(撤销未提交的修改):git revert HEAD 还原最近⼀次提交的修改:git revert commit-id还原指定版本的修改--分⽀管理git branch 查看本地所有的分⽀git branch -a 查看远程所有的分⽀git branch name 创建分⽀git branch –d dev 删除dev分⽀git push origin --delete dev 删除远程的dev分⽀git branch -m dev develop 重命名分⽀git checkout –b dev 创建dev分⽀并切换到dev分⽀上git merge dev 在当前分⽀上合并dev分⽀代git push origin zyf-dev 把当前新增的zyf-dev分⽀推送到远程库(远程仓库没有给分⽀则会新建⽴该分⽀)git checkout — * 把XX⽂件在⼯作区的修改全部撤销。
常用git命令以及idea中git的用法总结
常⽤git命令以及idea中git的⽤法总结前⾔最近本⼈将⼀些代码放到了github上,顺便总结了⼀下git的⽤法;经过了各种百度,最终形成了以下这篇⽂章。
个⼈感觉追求效率的话,只看最后⼀条git常⽤命令即可。
前⾯的似乎有⽤,⼜似乎没⽤......Git使⽤⽅法简介Git 是⼀个开源的分布式版本控制系统,⽤于敏捷⾼效地处理任何或⼩或⼤的项⽬。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发⽽开发的⼀个开放源码的版本控制软件。
Git 与常⽤的版本控制⼯具 CVS, Subversion 等不同,它采⽤了分布式版本库的⽅式,不必服务器端软件⽀持。
安装Git⼯作流程⼀般⼯作流程如下:1.克隆 Git 资源作为⼯作⽬录。
2.在克隆的资源上添加或修改⽂件。
3.如果其他⼈修改了,你可以更新资源。
4.在提交前查看修改。
5.提交修改。
6.在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
下图展⽰了 Git 的⼯作流程:Git ⼯作区、暂存区和版本库⼯作区:就是你在电脑⾥能看到的⽬录。
暂存区:英⽂叫stage, 或index。
⼀般存放在 ".git⽬录下" 下的index⽂件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:⼯作区有⼀个隐藏⽬录.git,这个不算⼯作区,⽽是Git的版本库。
下⾯这个图展⽰了⼯作区、版本库中的暂存区和版本库之间的关系:图中左侧为⼯作区,右侧为版本库。
在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master 分⽀所代表的⽬录树。
图中我们可以看出此时 "HEAD" 实际是指向 master 分⽀的⼀个"游标"。
所以图⽰的命令中出现 HEAD 的地⽅可以⽤ master 来替换。
git merge命令用法
git merge命令用法摘要:1.git merge 命令简介2.准备合并的分支3.实际合并操作4.冲突解决5.合并后的提交正文:在日常的版本控制工作中,`git merge` 命令是我们不可或缺的工具。
本文将详细介绍git merge 命令的用法,帮助你更高效地完成代码合并。
1.git merge 命令简介`git merge` 命令用于将一个分支的更改合并到另一个分支。
执行此命令前,你需要确保目标分支已经存在,否则git 会自动创建一个新的分支。
2.准备合并的分支在进行代码合并之前,你需要确保两个分支的代码是相互独立的。
换句话说,你需要确保准备合并的分支中有尚未合并的更改。
你可以通过以下方式检查两个分支之间的差异:```git log --oneline <branch1>..<branch2>```3.实际合并操作当确认两个分支存在差异后,你可以使用以下命令进行合并:```git merge <branch2>```这个命令会将分支`<branch2>` 的更改合并到当前分支。
若合并过程中没有发生冲突,git 会自动合并更改并生成一个新的提交。
4.冲突解决在实际操作中,合并过程中可能会遇到冲突。
当遇到冲突时,git 会暂停合并过程,并提示你解决冲突。
解决冲突的方法如下:- 手动解决:进入冲突文件所在的目录,查看冲突标记(例如`<<<<<<<`、`=======` 和`>>>>>>>`),并根据需要修改文件内容。
- 命令行解决:使用`git merge --resume` 命令恢复合并过程,这将跳过已解决的冲突,并专注于未解决的冲突。
5.合并后的提交解决冲突后,可以使用以下命令提交合并结果:```git commit -m "Merge branch <branch2>"```至此,你已经成功地将分支`<branch2>` 的更改合并到了当前分支。
git merge命令用法
git merge命令用法在使用git merge命令之前,首先需要确保你已经安装了Git并且正在使用命令行终端。
接下来,让我们深入了解git merge命令的用法和选项。
1. 基本用法:git merge <branch>这是git merge命令的最基本形式。
它将指定的分支(<branch>)合并到当前分支。
在执行合并之前,Git会尝试找到共同的祖先提交,并将两个分支的差异应用到当前分支上。
2. 合并选项:•--no-ff:默认情况下,Git执行合并时使用“快进(fast-forward)”策略,这意味着如果当前分支的HEAD指向的提交是目标分支的直接后继提交,Git会直接将当前分支的HEAD指向目标分支的HEAD,而不会创建一个新的合并提交。
使用--no-ff选项会强制Git创建一个新的合并提交,即使快进是可能的。
•--squash:使用--squash选项可以将合并的结果压缩为一个单独的提交,而不是创建一个包含多个提交的合并。
这在希望将多个分支的更改整合到一个单一的提交中时非常有用。
•--no-commit:默认情况下,Git在合并完成后会自动提交合并结果。
使用--no-commit选项可以执行合并但不自动提交,这样你可以在合并后进一步检查或修改,手动决定何时提交。
3. 冲突解决:在合并过程中,如果两个分支对同一文件的同一部分进行了不同的修改,Git 将无法自动解决冲突,需要手动干预。
在这种情况下,Git会在冲突的文件中插入冲突标记(<<<<<<<,=======,>>>>>>>),以指示冲突的范围。
你需要手动编辑这些文件,删除冲突标记,并决定保留哪个版本的修改或如何整合这两个版本的修改。
然后,使用git add命令将解决冲突后的文件标记为已解决冲突,最后使用git commit命令提交合并结果。
git pull push 用法
git pull push 用法Git是一种版本控制系统,它允许多人协作开发项目,并跟踪文件的变化。
`git pull`和`git push`是Git中常用的两个命令,用于从远程仓库拉取更新和将本地提交推送到远程仓库。
首先,我们来看一下`git pull`命令的用法。
`git pull`命令用于从远程仓库拉取最新的更改并合并到本地分支。
它的基本语法如下:git pull <remote> <branch>。
其中,`<remote>`是远程仓库的名称,`<branch>`是要拉取的分支名称。
当你运行`git pull`命令时,Git会自动尝试从指定的远程仓库拉取最新的更改,并将其合并到当前所在的分支。
接下来,让我们来看一下`git push`命令的用法。
`git push`命令用于将本地提交推送到远程仓库。
它的基本语法如下:git push <remote> <branch>。
同样,`<remote>`是远程仓库的名称,`<branch>`是要推送的分支名称。
当你运行`git push`命令时,Git会将当前分支的提交推送到指定的远程仓库中。
需要注意的是,`git pull`和`git push`命令都需要与远程仓库进行交互,因此在使用这两个命令之前,你需要先配置好远程仓库的地址和权限。
另外,还需要确保你当前所在的分支是正确的,并且本地的提交已经完成。
总之,`git pull`和`git push`是Git中非常常用的命令,它们分别用于从远程仓库拉取更新和将本地提交推送到远程仓库。
通过合理使用这两个命令,可以实现团队协作开发,保持代码同步,并确保项目的稳定性和可靠性。
Git的原理简介和常用命令
Git的原理简介和常⽤命令Git和SVN是我们最常⽤的版本控制系(Version Control System, VCS),当然,除了这⼆者之外还有许多其他的VCS,例如早期的CVS 等。
顾名思义,版本控制系统主要就是控制、协调各个版本的⽂档内容的⼀致性,这些⽂档包括但不限于代码⽂件、图⽚⽂件等等。
早期SVN占据了绝⼤部分市场,⽽后来随着Git的出现,越来越多的⼈选择将它作为版本控制⼯具,社区也越来越强⼤。
相较于SVN,最核⼼的区别是Git是分布式的VCS,简⽽⾔之,每⼀个你pull下来的Git仓库都是主仓库的⼀个分布式版本,仓库的内容完全⼀样,⽽SVN则不然,它需要⼀个中央版本库来进⾏集中控制。
采⽤分布式模式的好处便是你不再依赖于⽹络,当有更改需要提交的时候⽽你⼜⽆法连接⽹络时,你只需要把更改提交到本地的Git仓库,最后有⽹络的时候再把本地仓库和远程的主仓库进⾏同步即可。
当然,分布式和⾮分布式各有各的优缺点,但是⽬前来看,分布式的Git正逐渐被越来越多的⼈所接受并推⼴。
本⽂主要对Git的基本原理和常⽤命令进⾏简介,试图从底层来说明Git是如何⼯作的,从⽽帮助⼤家理解上层命令在执⾏的时候背后所产⽣的动作和变化。
原理部分的内容可以参考做进⼀步的了解,⽽常⽤的命令可以参考其他的资料。
本⽂的总结根据⾃⼰的理解进⾏描述,如果错误,请不吝赐教。
Git的基本原理本质上,Git是⼀套内容寻址(content-addressable)⽂件系统,⽽和我们直接接触的Git界⾯,只不过是封装在其之上的⼀个应⽤层。
这个关系颇有点类似于计算机⽹络中应⽤层和下属层的关系。
在Git中,那些和应⽤层相关的命令(也就是我们最常⽤的命令,如git commit、 git push等),我们称之为porcelain命令(瓷器之意,意为成品、⾼级命令);⽽和底层相关的命令(⼏乎不会在⽇常中使⽤,如git hash-object、git update-index等),则称之为plumbing命令(管道之意,是连接git应⽤界⾯和git底层实现的⼀个管道,类似于shell,底层命令)。
Git常用命令总结
git revert
反转撤销提交.只要把出错的提交(commit)的名字(reference)作为参数传给命令就可以了.
git revert HEAD: 撤销最近的一个提交.
git revert会创建一个反向的新提交,可以通过参数-n来告诉Git先不要提交.
git add .
会递归地添加当前工作目录中的所有文件.
git diff
不加参数的git diff:
show diff of unstaged changes.
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容.
git reset --hard
unstage files AND undo any changes in the working directory since last commit.
使用git reset —hard HEAD进行reset,即上次提交之后,所有staged的改动和工作目录的改动都会消失,还原到上次提交的状态.
git diff [branchA]…[branchB]给出的.
实际上它是:git diff $(git merge-base [branchA] [branchB]) [branchB]的结果.
git commit
提交已经被add进来的改动.
git commit -m “the commit message"
同样是用来看改动的相对信息的,--stat比-p的输出更简单一些.
git add
在提交之前,Git有一个暂存区(staging area),可以放入新添加的文件或者加入新的改动. commit时提交的改动是上一次加入到staging area中的改动,而不是我们disk上的改动.
git基础操作命令
1. git pull 更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支2. git push 将本地代码提交到服务器3. git log 查看提交信息a). git log -p 查看历次的log信息及更改情况b). git log -p -4 查看距现在最近的4次的log信息及更改情况c). git log frameworks/ 查看关于frameworks/目录修改相关的log信息d). git log --stat 查看log显示文件修改情况e). git log --stat packages/apps/Contacts/ 查看关于packages/apps/Contacts/目录修改相关的log显示的文件修改情况4. git status查看工作目录和代码仓库的改动情况,这个比较重要,可以查看你自己代码哪些需要上传,然后再去add commit5. git diff 查看工作目录和本地仓库的差异或者本地仓库各个版本的差异a). git diff packages/apps/Contacts/AndoridManifest.xml 查看工作目录中AndoridManifest.xml和本地仓库中AndoridManifest.xml的不同b). git diff b46cae3b9a377bcd9cfc249a5778fce647feb961dc94bf29aab18168e79d6496a89e47dba7a1d494 查看这两个版本的不同(git diff history_oldhistory_current)c)git diff84d7c8bf6fde87316f693015d4a541a1adf037b3 b39cf58eea2f7733723ad90d104b83774136efa8 pa ckages/apps/Phone/src/com/android/phone/CallCard.java 查看两个版本之间针对特写文件的变化6. git commit 提交当前修改内容a). git commit file1 file2 -m "log message" 提交file1,file2到本地仓库b). git commit -a -m "log message" 提交所有在Git索引中的改动,所以事先先用git status,看自己代码和服务器的对比有哪些改动,最好不用-a7. git add 增加文件到Git索引a). git add file3 file4将file3,file4加入到Git索引中8. git rm 从Git索引移除文件a). git rm file3 将file3从Git索引中删除9. git branch 对分支的增、删、查操作a). git branch 显示所有本地分支b). git branch new_branch 在当前版本创建一个名为new_branch的分支c). git branch -D new_branch 强制删除名为new_branch的分支10. git checkout 在不同的branch切换和还原文件a). git checkout branch1 切换到branch1分支b). git checkout /packages/apps/Contacts/AndroidManifest.xml 会将AndroidManifest.xml文件从上一次提交的版本更新回来,未提交的部分会全部回滚11. git reset 将当前的工作目录完全回滚到指定的版本号a). git reset [--fixed] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1 只更新索引,不更新工作目录,也就是说所有的本地文件都不会更新b). git reset [--soft] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1c). git reset [--hard] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1 强制回滚到指定版本号,未提交的和此版本之后的更改全部删掉12. git mergea). git merge branch1 将branch1的改动合并到当前所在分支13. git patcha). git format-patch -1 打一个当前提交的补丁,也就是最后一次的提交改动b). git fromat-patch -1 6525c43add803bfee37cf5c1cb573ed8aecf529e 打一个指定具体某一次的补丁c). git format-patch -2 6525c43add803bfee37cf5c1cb573ed8aecf529e 打基于指定具体某个版本的接连两次的补丁15.git reset HEAD^表示回退刚刚的提交, git reset HEAD^^ 表示回退刚两次的提交,以此类推, 补充一下16.git format-patch -1 打印刚刚提交的一版的patch,相当于svn diff17.git show 查看当前提交的版本18.git show ffd98b291e0caa6c33575c1ef465eae661ce40c9 查看指定版本的文件19.git show ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename 查看指定版本的某个文件20.git show 2010-Aug-12 查看指定tag的文件21.git remote show 查看远程仓库的信息22.git remote show origin 查看某个远程仓库的详细信息,比如要看所克隆的origin仓库23.git revert -n hashcode : git撤销某次历史提交; -n 不加的话,相当于撤销后的树状态也提交了,加了-n只是工作树回退了那次提交的内容,工作树处于待提交状态24.git show 9f5202b77bdd33f885207b618b7b2a78b6671813packages/apps/FM/src/com/hymost/fm/ui/FMRadio.java 查看特定版本特定文件的修改25.git diff 6af41d3 d67778 packages/apps/Music/>2.patch这个非常有用, 6af41d3 比d67778 新, 上句这样做的好处是可以产生从6af41d3 到d67778的反向diff ,把这个反向diff 写入2.patch,这样谁打了2.patch,谁就等于作了一次6af41d3 版本在对packages/apps/Music上所做修改的文本回退(如果该版本对这个目录的改动是有错的需要回退的,这是个好办法).回退,千万少用revert和reset ,这两个动作和危险,容易导致结点丢失.Changes to be committed:# (use "git reset HEAD <file>..." to unstage) //reset 加--soft 会保持文件的stage状态,(to be committed,这往往是被撤消的提交中的文件,stage中的文件的修改是diff不出来的), 如果不加(默认:mixed)就会把所有mark to be committed的文件全unstage掉,这时可以diff出来该文件的改动了## modified: packages/apps/Contacts/src/com/android/contacts/ContactsUtils.java //不会被diff出来, ## Changed but not updated: //会被diff出来# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: frameworks/base/core/java/com/android/internal/app/RingtonePickerActivity.java# modified: frameworks/base/media/java/android/media/RingtoneManager.java## Untracked files: //不会参与版本管理,除非用git add进来# (use "git add <file>..." to include in what will be committed)补充一下: reset --hard hashcode就是相当于check out 掉所以从此hashcode之后的所有本地修改了,很危险,慎用.revert hashcode1相当于reset --hard, 不过它的指针不回退,反而是在当前HEAD之上再加一个版本,而该版本在文本上相当于hashcode1之前一个版本的文本内容,但这时候指针都没丢,反而还多了一个,这时候想回过来有办法,就是reset --hard 到HEAD^就行了,一切都回来了,等于什么也没做过.不过尽量不要用revert. 这已经是一个deprecated 命令了.其实对于像1->2->3->4->5,这样的版本链上,如果2->3东西有问题,想回掉这部分修改,却不影响3后面的修改,最好的办法就是不要通过指针来实现,而是通过本文修改来实现新增一个6版本,盖在5之上,我们只要把2->3的patch拿过来,在当前5的基础上,打个反向patch就行: git apply -R 2to3.patch, 这时你的本地代码从文本上就达到了你要想的结果,就是5的状态下把2->3的修改抹掉. 不过打patch有一点要注意,我们尽量不要把png等图片的patch放里头,这样会很慢,图片的二进制码很大. 而且我们可以对patch 进行修改,回退我们想要回退的文件和修改.26. 问题:1->2->3->4->5(本地和服务器上都是这个状态)如果你想把package/app/Contacts从5这个结点的内容恢复到2这个结点,但又想让HEAD指针保持在5上,怎么做?(1)首先,git checkout 78350ad27ed3ad070bc0b5044ec594e70800aded(结点2的hashcode) packages/apps/Contacts/此时,你git log 看到的最新的commit结点会是:commit ba5ca90406bd6aaba3c54c46e9d143829b6a52fb-----结点6Merge branch 'master' of 192.168.10.104:repositories/7x27a-2045这句话到底做了件什么事呢,首先它把packages/apps/Contacts/的内容恢复到2这个结点的状态,然后并最新的内容修改(即恢复后的)做为一个新的结点6来在5的后面提交一个新的结点,所以现在情况变成了:1->2->3->4->5->6(2)但是我们又不想增加新结点,怎么办呢,很简单,只要软reset一下就行,也就是:git reset 5点的hashcode,这样子你再用git diff 就会发现相当于你把package/app/Contacts下面的内容都手动准确地改到了2结点的状态,指针链还是保持在原来的1->2->3->4->5。
Git常用命令详解
Git常⽤命令详解Git 是⼀个很强⼤的分布式版本管理⼯具,它不但适⽤于管理⼤型开源软件的源代码(如:),管理私⼈的⽂档和源代码也有很多优势(如:)Git 的更多介绍,请参考我的上⼀篇博客:⼀、 Git 命令初识在正式介绍Git命令之前,先介绍⼀下Git 的基本命令和操作,对Git命令有⼀个总体的认识⽰例:从Git 版本库的初始化,通常有两种⽅式:1)git clone:这是⼀种较为简单的初始化⽅式,当你已经有⼀个远程的Git版本库,只需要在本地克隆⼀份例如:git clone git:///someone/some_project.git some_project上⾯的命令就是将'git:///someone/some_project.git'这个URL地址的远程版本库,完全克隆到本地some_project⽬录下2)git init 和 git remote:这种⽅式稍微复杂⼀些,当你本地创建了⼀个⼯作⽬录,你可以进⼊这个⽬录,使⽤'git init'命令进⾏初始化;Git 以后就会对该⽬录下的⽂件进⾏版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建⼀个⽬录,并把可访问的URL记录下来,此时你就可以利⽤'git remote add'命令来增加⼀个远程服务器端,例如:git remote add origin git:///someone/another_project.git上⾯的命令就会增加URL地址为'git: ///someone/another_project.git',名称为origin的远程服务器,以后提交代码的时候只需要使⽤ origin别名即可⼆、 Git 常⽤命令1) 远程仓库相关命令检出仓库: $ git clone git:///jquery/jquery.git查看远程仓库:$ git remote -v添加远程仓库:$ git remote add [name] [url]删除远程仓库:$ git remote rm [name]修改远程仓库:$ git remote set-url --push [name] [newUrl]拉取远程仓库:$ git pull [remoteName] [localBranchName]推送远程仓库:$ git push [remoteName] [localBranchName]*如果想把本地的某个分⽀test提交到远程仓库,并作为远程仓库的master分⽀,或者作为另外⼀个名叫test的分⽀,如下:$git push origin test:master // 提交本地test分⽀作为远程的master分⽀$git push origin test:test // 提交本地test分⽀作为远程的test分⽀2)分⽀(branch)操作相关命令查看本地分⽀:$ git branch查看远程分⽀:$ git branch -r创建本地分⽀:$ git branch [name] ----注意新分⽀创建后不会⾃动切换为当前分⽀切换分⽀:$ git checkout [name]创建新分⽀并⽴即切换到新分⽀:$ git checkout -b [name]删除分⽀:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分⽀,对于未有合并的分⽀是⽆法删除的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Git 19个常用的命令
Git 19个常用的命令
1. 超实用 Alias
1 2 3 4 5 6 7 8 alias g="git"
alias gb="git branch"
alias gco="git checkout"
alias gcmsg="git commit -m"
alias gamend="git commit --amend -C HEAD"
alias gst="git status"
alias log="git log --oneline --graph --decorate --color=always" alias logg="git log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold
green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative"
2. 取回远端 master 与本地 master 分支合并 1 2 3 4 5 6 7 gco master g fetch --all 或者 g fetch origin master g reset --hard origin/master(本地没有修改,所以完全覆盖也没关系) 或者 g rebase origin/master (本地有修改还没push )
3. 推送分支到远端
假设现在所在的分支是import ,指定推送到远端分支liujin-import 1 g push origin import:liujin-import
假如远端的 liujin-import 分支已经不需要,可以直接覆盖掉 1 g push -f origin import:liujin-import
4. 追加文件到某个 commit
有时候修完某功能并提交了 commit 之后才发现还有一点小修改,这时候又不想再提交一个commit ,可以追加这个文件到前一个commit ,步骤如下: 1 2 git add 你要追加修改的文件
git commit --amend -C HEAD 或者 gamend
5. 查找包含某文件的 commit
1 2 git log 文件路径
git show commit_id
或者
1 git log --follow filename(绝对路径)
Ref: List all commit for a specific file
6. 把一个 commit 分拆为两个 commit
老大常说要养成一个小改动对应一个commit 的习惯,但是有时候写得太乱懒得去分割就把很多改动做成了一个commit ,这样子增加了以后维护的难度,所以要把一个 commit 分拆为多个 commit 怎么办呢?
∙ 首先把你要分拆的 file reset 了:
1 2 git reset HEAD~1 path/to/file
# This doesn't delete your changes to path/to/file
∙ 接着修改当前这个 commit 的 message ,命令是:
1 2 git commit --amend -v
# -v 参数是打开editor 编辑
∙ 然后就可以把 reset 出来那个 file 新建一个 commit ,命令是:
1 git commit -v path/to/file
这样就把一个 commit 分拆为两个啦,^_^
7. 删除某些 commit
1 git rebase -i HEAD~10
8. 追加修改到之前某个 commit
假如 gst 发现已经有文件被修改,这时候需要把修改暂存起来。
1 git stash
接着找到你需要追加修改的那个commit id ,如4b739bb
1 2 g rebase 4b739bb~ -i 或者
g rebase -i HEAD~5 #列出最近5个commit
这时候会自动打开编辑器,把你需要修改的 commit 前面的 pick 改成 edit ,保存,关闭编辑器,这时候会回到终端,再输入:
1 g stash pop
把暂存的修改读出来,然后做修改,g add .,最后
1 g rebase --continue
9. 查找含有特定关键字的 commit
git log --grep
最基本的用法
git log --grep=frotz --grep=nitfol --since=1.month
查找一个月以内commit log message 里含有 frotz 或者 nitfol 的 commits
git log --grep=frotz --author=Linus
查找指定作者
git grep -l -e frotz --and -e nitfol
查找同一行含有 frotz 和 nitfol 的文件
git grep -l --all-match -e frotz -e nitfol
查找文件里面含有 frotz 和 nitfol 的文件(不局限于同一行)
10. 清空 git working copy 还没追踪的文件 git clean -f
git clean -f -d
如果还想删除目录
git clean -f -X
如果只是想删除忽略的文件
git clean -f -x
如果想删除忽略和非忽略的文件
11. 清理本地仓库
长时间做一个项目,经常需要 git fetch ,这样做每次都会拉回远端的全部分支。
即使远端有些分支已经删除,但是运行git branch -a 还是会显示已删除的分支, 长时间下来这个列表就会很长很长,这时候就需要清理一下本地的仓库了: 1 2 git remote prune origin # `prune`会删除任何不存在于远端仓库的分支,这样运行 `git branch -a`命令的时候顿时就清静了
12. 创建追踪远端分支的本地分支
1 2 gb dev origin/r1-dev
#Branch dev set up to track remote branch r1-dev from origin.
13. 分支移动
1 2 g branch -f master HEAD~3
# 把 master 分支强制移到 HEAD 前面第三个 commit
14. Revert 一个 Merge
git revert -m 1 M -> W
1 2 3 ---o---o---o---M---x---x---W
/
---A---B
15. 获取短的 commit hash
1 git rev-parse --short HEAD
16. commit 了以后才记起来忘了创建 .gitignore , 垃圾文件都已经提交
比如说一个nodejs 项目,一开始的时候就忘记了创建.gitnore 文件忽略掉node_modules 的内容,所以其中的内容就已经被提交了。
即使紧接着你在.gitignore 加了一行node_modules , 已经被提交的文件是不会自动删除的。
这时候你就需要做的就是:
1 2 3 git rm --cached path/to/ignored
#nodejs 案例就是
git rm -r --cached node_modules
17. 提交所有被删除的文件
1 $ git add -u
这个命令告诉 git 自动更新已跟踪的文件, 包括被删除的已跟踪文件。
如果你用的是 git 2.0
1 $ git add -u :/
友情提示:从 git 2.0(2013年中)开始,以上命令会 stage 整个 working tree 的文件。
如果你只是想 stage 当前目录的文件,应该这么用:
1 $ git add -u .
详情可以去搜 ““git add -A” 和 “git add .” 的区别”.
Ref: StackOverflow
18. 撤销上一次git add .操作
这种情况通常是因为忘记添加.gitignore文件,或者一时手快把一些非必要的文件(如node_modules)跟踪了, 解决办法:
1 git reset
该命令会unstage 你上一个commit 增加的所有文件。
如果你只想unstage 某些文件:
1 git reset -- <file 1><file 2><file n>
还可以unstage 文件里某处的改动:
1 git reset -p
19. 值得一读
Working with submodules
Managing large files with Git LFS
git bisect。