GIT命令
- 格式:docx
- 大小:35.90 KB
- 文档页数:8
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版本控制系统中用于将一个分支的更改合并到另一个分支中的命令。
这个命令的原理涉及到Git的三个核心概念:commit,tree和blob。
首先,了解一下Git的基本数据结构。
在Git中,所有的数据都是以文件的形式存储在对象库中。
对象库由一系列的对象组成,每个对象都有一个唯一的SHA-1哈希值来标识。
Git的数据模型是基于内容寻址,这意味着每个对象的哈希值都根据其内容计算得出。
首先,我们需要了解commit对象。
在Git中,commit对象用于存储提交信息和指向tree对象的指针。
每个commit对象都有一个SHA-1哈希值来标识。
当我们进行一个commit操作时,Git会创建一个新的commit对象,并将其加入到对象库中。
接下来,我们来了解tree对象。
在Git中,tree对象用于存储文件和目录的层次结构。
每个tree对象都有一个SHA-1哈希值来标识。
当我们进行一个commit操作时,Git会创建一个新的tree对象,该tree对象代表了提交的整个文件和目录结构。
tree对象中保存了文件和目录的名字、类型和sha1哈希值。
最后,我们需要了解blob对象。
在Git中,blob对象用于存储文件的内容。
每个blob对象都有一个SHA-1哈希值来标识。
当我们添加、修改或删除一个文件时,Git会创建一个新的blob对象,并将其加入到对象库中。
现在,我们来看一下merge命令的原理。
假设我们有一个主分支(master)和一个开发分支(dev),我们想要将dev分支的更改合并到master分支中。
1.首先,Git会查找两个分支最近的共同祖先commit对象。
这个共同祖先commit对象是两个分支的最后一个commit对象的最早公共祖先。
Git使用这个共同祖先commit对象来确定两个分支的差异。
2.接下来,Git会创建一个新的合并commit对象,该commit对象有两个父commit对象:一个是当前分支(master)的最后一个commit 对象,另一个是要合并的分支(dev)的最后一个commit对象。
git的基本命令
Git 基本命令:
git init –初始化一个Git仓库
git config –设置Git的配置
git add –将文件添加到版本库
git commit –提交文件到版本库
git status –检查Git的当前状态
git log –显示有关提交的日志信息
git diff –查看提交之间的不同
git show –显示提交的详细信息
git remote –管理远程版本库
git checkout –切换分支或者回退版本
git reset –重置版本库到某个commit
git tag –加标签某个提交
git fetch –从远程仓库获取最新版本
git pull –从远程仓库获取最新版本并自动合并到当前git merge –合并分支到当前分支
git rebase –重新应用已存在的提交
git cherry-pick –选择提交放入当前分支
git blame –检查某行代码是谁提交的
git stash –把当前未完成的工作暂存起来
git revert –恢复版本库到某个commit
git clean - 移除未跟踪的文件
git archive –创建zip/tar文件。
git 菜鸟教程
git 是一个分布式版本控制系统,常用于管理和追踪软件开发
过程中的代码变更。
它具有高效、灵活、可靠的特点,因此在开发团队中广泛应用。
在使用 git 进行版本控制时,我们可以通过以下命令完成常见
操作:
1. 初始化仓库:使用 `git init` 命令在当前目录初始化一个新的git 仓库。
2. 提交文件:使用 `git add` 命令将要提交的文件添加到暂存区,然后使用 `git commit` 命令提交更改到本地仓库。
3. 查看仓库状态:使用 `git status` 命令可以查看当前仓库的状态,了解哪些文件被修改或添加。
4. 查看提交历史:使用 `git log` 命令可以查看仓库的提交历史
记录,包括每次提交的作者、日期和提交信息。
5. 分支操作:使用 `git branch` 命令可以查看、创建和删除分支,使用 `git checkout` 命令可以切换到不同的分支。
6. 远程仓库:使用 `git remote` 命令可以管理远程仓库,如添加、删除和修改远程仓库的地址。
7. 拉取和推送:使用 `git pull` 命令可以从远程仓库拉取最新
的代码,使用 `git push` 命令可以将本地的代码推送到远程仓库。
8. 解决冲突:在多人协同开发时,可能会出现代码冲突的情况,可以使用 `git merge` 命令或 `git rebase` 命令解决冲突。
除了上述基本命令外,git 还有很多其他功能和命令,如标签
管理、分支合并、重置、撤销等。
通过学习和使用这些命令,我们可以更好地掌握 git 的使用,提高代码管理和协同开发的效率。
概述使用git命令推送代码的操作步骤
1.初始化本地仓库:在待推送的代码所在的文件夹内打开命令行窗口,使用以下命令初始化本地仓库:
```bash
git init
```
2.添加代码到暂存区:使用以下命令将待推送的代码添加到暂存区:
```bash
git add .
```
此处`.`代表当前目录下的所有文件,也可以使用具体的文件路径添
加指定的文件。
3.提交代码到本地仓库:使用以下命令将代码提交到本地仓库,并添
加提交说明:
```bash
```
4.关联远程仓库:使用以下命令将本地仓库与远程仓库进行关联:
```bash
git remote add origin 远程仓库地址
```
其中,远程仓库地址可以是HTTP或SSH协议的地址,例如:
```bash
```
5.推送代码到远程仓库:使用以下命令将本地仓库的代码推送到关联
的远程仓库:
```bash
git push origin master
```
此处`master`是主分支的名称,可以根据实际情况使用其他分支名称。
6.输入远程仓库的用户名和密码:如果远程仓库需要认证,会提示输
入用户名和密码,输入正确的用户名和密码后,即可完成代码的推送。
以上就是使用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 rebase命令Git rebase命令是Git版本控制系统中的一条重要命令,它的主要作用是将一条分支的提交记录复制到另一条分支上,从而改变分支的基础。
通过使用git rebase命令,我们可以实现将当前分支中的提交记录移动到另一个分支上,或者改变提交记录的顺序,是进行分支管理和提交记录整理的重要工具。
二、git rebase命令的基本用法1. 切换到目标分支在进行git rebase操作之前,首先需要切换到目标分支,即想要将提交记录复制到的分支上。
假设我们想要将feature分支的提交记录复制到master分支上,那么首先需要在命令行中执行以下命令:```git checkout master```2. 执行git rebase命令切换到目标分支后,就可以执行git rebase命令了。
git rebase命令的基本用法如下:```git rebase <branch>```其中,<branch>是指想要将提交记录复制到的目标分支的名称。
在上述例子中,我们需要执行以下命令:```git rebase feature```执行该命令后,Git会将feature分支上的提交记录复制到master分支上,并且重新应用之前在master分支上的提交记录,从而生成一个新的提交历史。
3. 处理冲突在执行git rebase命令时,如果目标分支与当前分支存在冲突,那么Git会暂停rebase过程并提示用户解决冲突。
此时,用户需要手动解决冲突,并执行以下命令:```git add <conflict files>git rebase --continue```通过以上命令,用户可以将解决冲突后的文件标记为已解决,并继续进行rebase操作。
4. 中止rebase操作在执行git rebase命令的过程中,如果用户希望中止rebase操作,可以执行以下命令:```git rebase --abort```该命令将撤销rebase操作,并恢复到rebase操作之前的状态。
Git Revert 用法简介Git是一个强大的版本控制系统,可以帮助开发者有效地管理和追踪代码更新。
其中,git revert是一个重要的命令,用于撤销已经提交的代码更改。
本文将详细介绍git revert命令的使用方法和示例。
1. git revert 是什么?git revert是一个用于撤销已提交的代码更改的Git命令。
它并不会直接删除已提交的更改,而是通过创建一个新的提交来撤销指定的提交。
因此,gitrevert是一种安全的回退代码的方法,不会对代码仓库造成破坏性改变。
2. 如何使用 git revert?git revert命令的基本语法如下:git revert <commit>其中,<commit>表示要撤销的提交的标识,可以使用提交的哈希值或引用来指定。
下面是一些常见的git revert命令示例:•撤销最近的一次提交:git revert HEAD•撤销指定提交:git revert <commit>•撤销多个提交:git revert <commit1> <commit2>3. git revert 的工作原理当执行git revert命令时,Git会创建一个新的提交来撤销指定的提交。
这个新提交会将代码恢复到指定提交之前的状态,并将该提交应用到当前分支上。
Git会比较指定提交与其上一次提交之间的差异,并根据差异内容生成新的代码更改。
新的提交会包含这些更改,以撤销原提交的影响。
4. git revert 的特点使用git revert命令回退代码相比其他方法具有一些特点:•安全性:git revert是一种不会破坏代码仓库的方法,因为它不直接删除提交,而是创建新的提交来撤销之前的更改。
•可追溯性:git revert创建的新提交具有与其他提交类似的特性,可以像其他提交一样进行查看、比较和回滚。
•适用性:git revert可以回退单个或多个提交,适用于各种场景。
Git操作详解,学会Git⼏乎成了开发者的必备技能。
是⽬前最流⾏的,学会是⽬前最流⾏的Git有很多优势,其中之⼀就是远程操作⾮常简便。
本⽂详细介绍5个Git命令,它们的概念和⽤法,理解了这些内容,你就会完全掌握Git远程操作。
git clonegit remotegit fetchgit pullgit push本⽂针对初级⽤户,从最简单的讲起,但是需要读者对Git的基本⽤法有所了解。
同时,本⽂覆盖了上⾯5个命令的⼏乎所有的常⽤⽤法,所以对于熟练⽤户也有参考价值。
⼀、git clone远程操作的第⼀步,通常是从远程主机克隆⼀个版本库,这时就要⽤到git clone命令。
$ git clone <版本库的⽹址>⽐如,克隆jQuery的版本库。
$ git clone https:///jquery/jquery.git该命令会在本地主机⽣成⼀个⽬录,与远程主机的版本库同名。
如果要指定不同的⽬录名,可以将⽬录名作为git clone命令的第⼆个参数。
$ git clone <版本库的⽹址> <本地⽬录名>git clone⽀持多种协议,除了HTTP(s)以外,还⽀持SSH、Git、本地⽂件协议等,下⾯是⼀些例⼦。
$ git clone http[s]:///path/to/repo.git/$ git clone ssh:///path/to/repo.git/$ git clone git:///path/to/repo.git/$ git clone /opt/git/project.git$ git clone file:///opt/git/project.git$ git clone ftp[s]:///path/to/repo.git/$ git clone rsync:///path/to/repo.git/SSH协议还有另⼀种写法。
$ git clone [user@]:path/to/repo.git/通常来说,Git协议下载速度最快,SSH协议⽤于需要⽤户认证的场合。
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 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>` 的更改合并到了当前分支。
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 版本库的初始化,通常有两种⽅式: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选项只能删除已经参与了合并的分⽀,对于未有合并的分⽀是⽆法删除的。
git clone命令用法-回复关于Git版本控制系统中的git clone命令的用法引言:在软件开发过程中,版本控制是一个非常重要的环节。
Git是目前最流行的分布式版本控制系统之一,它的设计简单而强大,可以有效地帮助团队协作开发项目。
git clone命令是Git中的一个关键命令,它可以用来从远程仓库克隆项目到本地。
本文将详细介绍git clone命令的用法,帮助读者更好地理解和掌握这个命令。
一、git clone命令的概述在了解git clone命令的具体用法之前,让我们来了解一下这个命令的基本概述。
git clone命令用于从远程仓库克隆一个版本库到本地。
通过克隆远程仓库,我们可以获得项目的最新代码,同时也可以建立本地仓库来与远程仓库保持同步。
Git克隆操作是非常灵活的,可以克隆整个项目或者某个分支,也可以只拷贝指定的历史版本。
下面我们将一步一步来介绍如何使用git clone命令。
二、准备工作在开始使用git clone命令之前,我们需要确保在本地安装了Git工具。
在Windows系统下,可以去Git官网(version`命令,如果能正确显示Git的版本号,则表示安装成功。
三、基本用法首先,我们需要找到远程仓库的URL地址。
一般来说,远程仓库会提供一个URL用来clone项目。
我们可以在远程仓库的页面中找到这个URL。
例如,在GitHub上,可以找到绿色的“Code”按钮,点击后会弹出一个框,其中包含了克隆项目所需的URL。
1. 克隆整个项目:git clone <URL>在命令行终端中输入以上命令,将URL替换为远程仓库的URL,然后执行,Git会将整个项目克隆到当前路径下的一个新目录中。
如果不指定目录名,则会使用远程仓库的名称作为目录名。
2. 克隆指定分支:git clone -b <branch> <URL>通过添加"-b"参数和分支名,可以只克隆指定的分支。
git merge命令用法1. 什么是git merge命令?Git是一种分布式版本控制系统,它可以帮助开发人员协同工作、追踪代码的变化以及管理代码库。
而git merge命令是Git中用于将一个分支的更改合并到另一个分支的命令。
通过使用git merge命令,我们可以将一个分支上的提交合并到另一个分支上,从而将不同分支的更改整合到一起。
2. git merge命令的基本用法使用git merge命令非常简单,只需要在目标分支上执行以下命令:git merge <branch-name>其中,<branch-name>是源分支的名称,它表示要合并的分支。
执行上述命令后,Git会将源分支上的更改合并到当前所在的目标分支。
3. git merge命令的常见选项除了基本的用法外,git merge命令还提供了一些选项,用于控制合并的行为。
下面介绍几个常见的选项:3.1 –no-ff选项git merge --no-ff <branch-name>使用–no-ff选项可以禁用快进合并(fast-forward merge),即使存在快进合并的情况,Git也会创建一个新的合并提交。
这样做的好处是可以保留源分支的提交历史,更容易追溯每个分支的更改。
3.2 –squash选项git merge --squash <branch-name>使用–squash选项可以将源分支的多个提交合并为一个提交。
这样做的好处是可以将多个相关的提交整理为一个干净、有序的提交,更易于代码审查和追溯。
3.3 –no-commit选项git merge --no-commit <branch-name>使用–no-commit选项可以在合并完成后不自动提交合并结果。
这样做的好处是可以在合并完成后进行进一步的修改和调整,再手动提交合并结果。
4. git merge命令的示例为了更好地理解git merge命令的用法,下面给出一些示例:4.1 合并分支假设我们有一个主分支(master)和一个开发分支(dev),现在我们要将开发分支上的更改合并到主分支上。
git拉取代码命令查看提交⽇志:git log更新代码:git pull查看是否有代码提交:git statusj将本地代码全都提交:git add .(也可以添加⽂件如git add test.txt)将本地代码合⼊分⽀并加⼊注释:git commit -m "提交"将提交的代码推送到主分⽀:git push origin HEAD:refs/for/master代码回滚:git resetgit reset --soft 保留本地分⽀git reset --hard 不保留本地分⽀git reset --soft f3896972ba839cbe4b997efda8ace386479ac0fd 回滚并保留本地分⽀git commit --amend来实现增量提交回退到上⼀个版本:git reset --hard HEAD^查看当前有⼏个分⽀:git branch查看所有分⽀:git branch -agit reflog进⾏所有的commitid得查询切换远程分⽀:git checkout -t remotes/origin/master如果本地有分⽀存在那么就去掉t命令如下:git checkout wangbipgit push --delete origin oldName上传新命名的本地分⽀git push origin newName.把修改后的本地分⽀与远程分⽀关联git branch --set-upstream-to origin/newNamegit reset head这样的话,我们就可以回到开始了。
但这个操作好像仅限于在master之类的分⽀上,如果是在⼀个新的远程分⽀,就会出现:Unstaged changes after reset解决的办法如下2中办法:1.git add .git reset --hard2.git stashgit stash drop。
Git 命令速查表1、常用的Git命令
命令简要说明
gitgrep文件内容搜索定位工具
gitgui基于Tcl/Tk的图形化工具,侧重提交等操作git help帮助
gitinit版本库初始化
gitinit-db*同义词,等同于gitinit
git log显示提交日志
git merge分支合并
gitmergetool图形化冲突解决
git mv重命名
git pull拉回远程版本库的提交
git push推送至远程版本库
git rebase分支变基
git rebase–interactive交互式分支变基
gitreflog分支等引用变更记录管理
git remote远程版本库管理
git repo-config*同义词,等同于gitconfig
git reset重置改变分支“游标”指向
git rev-parse将各种引用表示法转换为哈希值等
git revert反转提交
gitrm删除文件
git show显示各种类型的对象
git stage*同义词,等同于git add
git stash保存和恢复进度
git status显示工作区文件状态
git tag里程碑管理
2、对象库操作相关命令
3、引用操作相关命令
4、版本库管理相关命令
5、数据传输相关命令
6、邮件相关命令
7、协议相关命令
8、版本库转换和交互相关命令
9、合并相关的辅助命令
10、杂项。