git命令使用说明(整理中........)
- 格式:docx
- 大小:102.88 KB
- 文档页数:4
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中大部分操作都是针对本地文件和本地数据库,只有在我们平时执行类似克隆(clone)、pull、push等命令时才与远程服务器交互。
这样对于开发维护代码库就很安全,因为一旦远程服务器代码丢失仍然可以将本地代码上传到服务器;也会给开发者带来诸多方便,因为将远程代码取到本地后可以随意的修改,一旦修改混乱之后仍然可以恢复到以前版本,即使本地代码被误删除仍然可以重新从服务器取回代码。
下面将针对一些常用使用命令和技巧进行介绍:一、git提交规范在commit是,如果有对应PR,请在第一行写上PR号,然后再描述信息(另起行),并把涉及到改动的文件名附上.具体操作如下(不用git commit -m 填写说明):1、如果提交全部文件(请先git status确认是否要提交所有改动)1.1 git commit -a1.2 在打开的编辑器中(默认为VIM) 第一行填写PR号(顶格写,多个PR用逗号隔开,要写全),然后再写说明。
1.3 把涉及修改文件路径前的# 去掉,就会提交,不用手工输入文件路径。
1.4 然后ESC 输入:wq退出VIM.2、如果提交部分文件2.1 分别git add 要提交的所有文件。
2.2 git commit。
2.3 以后步骤同上。
二、第一次初始配置1、第一次取出代码到本地需要克隆代码(从服务器取代码到本地),一般如果新建一个本地代码库都需要重新克隆一次代码。
命令:git clone git://服务器代码库地址2、第一次使用git环境一般应该配置你的用户信息,这样会方便别人与自己查看git提交代码记录。
命令:$ git config --global zhangsan$ git config --global user.email *****************.cn这里使用的—global,以后的所有项目都默认使用这个配置,这时写入的是用户主目录的git配置文件(跟曲以鹏在邮件里边说的那个“.gitconfig”文件应该是一回事),如果想改变其中一个项目的配置可以去掉—global重新配置如:命令:$ git config lisi查看这些配置信息,如:命令:$ git config --list3、修改编辑器,一般我们在git commit(提交)后,需要添加PR号或者添加注释信息,对于编辑可以选用自己习惯的编辑器如:vi命令:$ git config --global core.editor vi三、提交代码(这部分只是针对本地代码库,所有操作都没有涉及服务器)1、提交代码过程大家都非常熟悉,平时常用几种命令,如:$ git add file –> $ git commit 或者全部提交:$ git commit –a当中可能经常使用如$ git status 查询状态、$ git diff 比较不同。
git config 是用于进行一些配置设置的命令,有三种不同的方式来指定这些配置适用的范围:
1. git config 针对一个 git 仓库。
2. git config --global 针对一个用户。
3. sudo git config --system 针对一个系统,因为是针对整个系统的,所以必须使用 sudo。
此外,git config 还有以下用法:
1. 查看所有配置:git config -l
2. 查看特定配置:git config --get <key>
3. 设置特定配置:git config --set <key> <value>
4. 删除特定配置:git config --unset <key>
在使用 git config 时,如果当前目录不是一个有效的 git 仓库,在执行一些命令时会报错。
一般我们 clone 一个 git 仓库,默认都是一个工作目录,那么对应的配置变量 bare = false。
当我们在用 git 提交代码前,这个是必须要设置的。
以上信息仅供参考,如需了解更多信息,请查阅官网或咨询专业人士。
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 通过可变指针来实现对提交数据的历史版本的控制,每当我们提交新的更新,当前分支(设为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命令来实现。
sourcegit用法在开发项目中,版本控制和代码管理是非常重要的环节。
Git作为目前世界上最流行的分布式版本控制系统,广泛应用于软件开发和维护中,为程序员们提供了非常便捷的协作和管理手段。
在Git中,sourcegit是一个十分实用的命令,下面我们来介绍一下它的用法。
1. 查看源代码在Git中,sourcegit命令可以直接查看源代码,包括文件的修改记录和差异,非常适合程序员们进行版本追踪和比较。
使用如下:```sourcegit show [file path]```其中的[file path]是指要查看的文件路径。
如果想要查看某个提交的修改记录,可以加上commit SHA值:```sourcegit show [commit SHA值]:[file path]```2. 修改历史记录在使用Git进行代码协作和版本管理时,有时候需要对提交的历史记录进行修改或者删除。
sourcegit命令可以在这方面提供很好的支持,使用如下:```sourcegit rebase -i [commit SHA值]```其中的[commit SHA值]是指要修改的提交的哈希值。
在这个命令的交互界面中,你可以对每个提交进行单独编辑,包括修改提交信息、移除某个提交或者合并多个提交。
3. 比较提交除了查看源代码之外,sourcegit还可以用来比对提交内容之间的差异,并提供标记和注释功能。
使用如下:```sourcegit diff [commit SHA值1] [commit SHA值2]```其中的[commit SHA值1]和[commit SHA值2]是指要比较的两个提交的哈希值。
sourcegit会将这两个提交之间不同的内容标记出来,并提供解释和备注功能。
4. 分支管理在Git中,分支管理是非常重要和复杂的功能。
sourcegit命令可以帮助我们更好的处理分支之间的关系,并进行合并、重叠等操作。
使用如下:```sourcegit branch [分支名] [基准分支名]```其中的[分支名]是指要创建或者切换的分支名字,[基准分支名]是指要基于哪个分支来创建或切换。
gitpython使用说明全文共四篇示例,供读者参考第一篇示例:GitPython是一个Python库,用于与Git版本控制系统进行交互。
它提供了简单的API,可以方便地访问Git仓库,并执行一系列Git操作。
本文将介绍如何使用GitPython来管理代码的版本控制。
### 安装GitPython首先,我们需要安装GitPython库。
可以使用pip工具进行安装:```shellpip install gitpython```### 初始化Git仓库在使用GitPython之前,需要先将代码仓库初始化为Git仓库。
可以使用`Repo`类来初始化Git仓库:```pythonfrom git import Reporepo = Repo.init('/path/to/your/repository')```### 获取Git仓库信息可以使用`Repo`对象来获取Git仓库的信息,比如当前分支、提交等信息:```pythonprint(repo.active_branch) # 当前分支print(mit) # 最新提交print(list(repo.iter_commits())) # 所有提交```### 执行Git操作GitPython提供了一系列方法来执行Git操作,比如添加文件、提交、拉取、推送等:```pythonrepo.index.add(['file1.py', 'file2.py']) # 添加文件mit('commit message') # 提交repo.remotes.origin.pull() # 拉取repo.remotes.origin.push() # 推送```### 切换分支可以使用`Repo`对象来切换分支:```pythonrepo.git.checkout('-b', 'new_branch') # 创建并切换到新分支repo.git.checkout('master') # 切换到master分支```### 回滚操作可以使用`git`指令来执行回滚操作:```pythonrepo.git.reset('--hard', 'HEAD^') # 回滚到上一个版本repo.git.revert('HEAD') # 撤销最新的提交```### 其他功能除了上述常用操作外,GitPython还提供了更多的功能,比如查看diff、文件状态、修改历史等:```pythonprint(repo.git.diff()) # 查看当前更改print(repo.is_dirty()) # 是否有未提交的更改print(repo.git.log()) # 查看提交历史```### 总结通过以上介绍,我们可以看到GitPython提供了一套方便的API 来管理Git仓库。
git pull 用法
git pull 是Git 版本控制系统中的一个命令,用于从远程代码仓库拉取最新的更新并合并到本地代码库中。
它的用法如下:
git pull [<remote>] [<branch>]
●<remote>:可选参数,指定要拉取更新的远程代码仓库,默认为origin。
●<branch>:可选参数,指定要拉取更新的分支,默认为当前分支。
例如,要从远程代码仓库的origin 仓库拉取更新并合并到当前分支,可以执行以下命令:
git pull
如果你想从其他远程代码仓库拉取更新,可以指定远程仓库的名称:
git pull upstream
如果你想拉取更新并合并到指定的分支,可以在命令中指定分支名称:
git pull origin main
在执行git pull 命令后,Git 会自动下载远程代码仓库的最新提交,并尝试将其合并到当前分支。
如果合并过程中发生冲突,你需要手动解决冲突后提交更改。
注意:在执行git pull 命令之前,建议先进行提交或者保存本地修改,以免发生冲突或覆盖本地修改。
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 pull 的用法摘要:1.简介2.git pull 的概念3.git pull 的用法a.本地仓库与远程仓库的关联b.拉取远程仓库的更新c.合并远程仓库的更新4.常见问题及解决方法a.冲突解决b.忽略文件或文件夹5.小结正文:Git 是一款非常强大的分布式版本控制系统,它可以帮助开发者高效地进行代码管理和协同工作。
在Git 中,pull 操作是一个非常重要的功能,它可以实现本地仓库与远程仓库的同步。
本文将详细介绍git pull 的用法及相关问题。
## 1.简介Git pull 命令用于将远程仓库的最新更改拉取到本地仓库,并尝试将远程仓库的更改合并到本地分支。
在团队协作中,使用pull 命令可以让开发者在本地查看、修改和提交远程仓库的更新,从而确保代码的同步和一致性。
## 2.git pull 的概念在了解git pull 的具体用法之前,我们需要先了解两个关键概念:本地仓库(local repository)和远程仓库(remote repository)。
- 本地仓库:指的是存储在本地计算机上的Git 仓库,通常用于个人的开发工作。
- 远程仓库:指的是存储在网络上的Git 仓库,通常用于团队协作。
## 3.git pull 的用法### 3.1 本地仓库与远程仓库的关联在使用git pull 之前,需要确保本地仓库已经与远程仓库建立了关联。
关联的方法如下:```git remote add origin <远程仓库地址>```其中,`<远程仓库地址>` 可以是远程仓库的HTTP 地址或SSH 地址。
### 3.2 拉取远程仓库的更新使用如下命令可以拉取远程仓库的最新更改:```git pull origin <远程仓库分支名>```其中,`<远程仓库分支名>` 是指要拉取的远程仓库分支的名称。
执行该命令后,本地仓库会更新到与远程仓库对应的分支。
Git基本操作命令合集平时⾃⼰敲敲代码,使⽤Git命令也渐渐多了起来。
使⽤起来的确很⽅便,今天来分享下Git基本概念和本地代码提交到github上的过程,很简单的,多操作⼏次就会了。
Git定义Git 是⼀个开源的分布式版本控制系统,⽤于敏捷⾼效地处理任何或⼩或⼤的项⽬。
Git 与常⽤的版本控制⼯具 CVS, Subversion 等不同,它采⽤了分布式版本库的⽅式,不必服务器端软件⽀持。
Git 与 SVN 区别1、Git 是分布式的,SVN 不是:这是 Git 和其它⾮分布式的版本控制系统,例如 SVN,CVS 等,最核⼼的区别。
2、Git 把内容按元数据⽅式存储,⽽ SVN 是按⽂件:所有的资源控制系统都是把⽂件的元信息隐藏在⼀个类似 .svn、.cvs 等的⽂件夹⾥。
3、Git 分⽀和 SVN 的分⽀不同:分⽀在 SVN 中⼀点都不特别,其实它就是版本库中的另外⼀个⽬录。
4、Git 没有⼀个全局的版本号,⽽ SVN 有:⽬前为⽌这是跟 SVN 相⽐ Git 缺少的最⼤的⼀个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使⽤的是 SHA-1 哈希算法。
这能确保代码内容的完整性,确保在遇到磁盘故障和⽹络问题时降低对版本库的破坏。
Git安装安装成功后,就可以使⽤命令⾏的git⼯具(已经⾃带了ssh客户端)了,另外还有⼀个图形界⾯的 Git 项⽬管理⼯具。
在开始菜单⾥找到"Git"->"Git Bash",会弹出Git命令窗⼝,你可以在该窗⼝进⾏Git操作。
Git基本命令新建代码库# 在当前⽬录新建⼀个 Git 代码库git init# 新建⼀个⽬录,将其初始化为 Git 代码库git init [project-name]# 下载⼀个项⽬和它的整个代码历史git clone [url]配置⽂件Git的设置⽂件为.gitconfig,它可以在⽤户主⽬录下(全局配置),也可以在项⽬⽬录下(项⽬配置)。
git fetch 用法Git Fetch 用法Git Fetch 是 Git 中一个非常重要的命令,它可以将远程仓库中的最新代码拉取到本地仓库中,以便进行合并或者比较等操作。
Git Fetch 命令可以让你在不合并远程分支的情况下获取最新的代码。
一、基础语法Git Fetch 命令的基础语法如下:```git fetch [remote-name]```其中,[remote-name] 表示远程仓库的名称。
如果你已经克隆了一个远程仓库,那么默认情况下会有一个名为 origin 的远程仓库。
二、使用场景Git Fetch 命令通常用于以下几种场景:1. 拉取最新代码:当你想要获取远程分支上最新的代码时,可以使用Git Fetch 命令。
2. 查看差异:通过 Git Fetch 可以将本地分支与远程分支进行比较,查看两者之间的差异。
3. 合并分支:在拉取了最新代码之后,你可以使用 Git Merge 命令将本地分支与远程分支进行合并。
三、常见用法1. 拉取最新代码通过以下命令可以拉取指定远程分支上的最新代码:```git fetch [remote-name] [branch-name]```其中,[branch-name] 表示远程分支的名称。
如果你想要拉取远程仓库中所有分支的最新代码,可以使用以下命令:git fetch [remote-name]```2. 查看差异通过以下命令可以查看本地分支与远程分支之间的差异:```git diff [local-branch] [remote-branch]```其中,[local-branch] 表示本地分支的名称,[remote-branch] 表示远程分支的名称。
3. 合并分支在拉取了最新代码之后,你可以使用 Git Merge 命令将本地分支与远程分支进行合并。
Git Merge 命令的基础语法如下:```git merge [branch-name]```其中,[branch-name] 表示要合并的分支名称。
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 push的使用
git push是一个常用的Git命令,用于将本地代码推送到远程仓库。
它会将本地分支的更新内容上传到远程仓库,并与远程分支进行合并。
下面是git push的使用方法:
1.首先,确保您已经在本地完成了一些代码修改,并且已经通过git add和git commit命令将这些修改提交到了本地仓库。
2. 确认您已经设置好了与远程仓库的连接,可以使用git remote -v命令查看当前配置的远程仓库地址。
3.执行git push命令,后面跟上远程仓库的名称和分支名。
例如,如果远程仓库名称为origin,要推送到main分支,则命令为git pushorigin main。
也可以简写为git push,因为Git 会根据当前所在分支自动推断出远程仓库和分支。
4.如果远程仓库有新的提交,而且与本地仓库产生冲突,Git将提示您解决冲突或者执行合并操作。
您需要根据具体情况进行处理。
5.输入远程仓库的用户名和密码(如果使用了HTTPS方式进行远程访问),以验证身份。
6.当推送成功后,Git将显示推送的结果信息,包括推送到哪个分支、新增了哪些提交等。
需要注意的是,git push 只会将您本地仓库中的提交推送到远程仓库,并不会影响其他人的代码。
如果其他人在您推送之前已经向远程仓库提交了新的代码,您需要先执行git pull命令来获取最新的代码,然后再进行推送。
此外,还可以使用一些额外的参数和选项来进行更复杂的操作,例如指定推送的分支、强制推送、设置默认的推送行为等。
您可以通过git push--help命令查看详细的帮助文档,以了解更多关于git push的用法和选项。
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操作说明
使用git之前
下载安装Cygwin Terminal
下载地址
/
安装过成中注意,选择git 和vim 相关选项进行安装完成后执行创建目录(和linux命令一样)
到创建好的目录下
执行
git clone /zople/365Project.git
检出项目
Git 相关命令以及操作流程
1.git config
说明:第一次操作时需要配置git的一些信息
例子:
git config -- global “Your Name”
git config -- global user.email “you@”
2 . git add
说明: 添加新增的内容需要add一下
例子:
git add /home/root/aaa/* (当前目录下所有的更新)
3.git commit
说明: commit如下所示–m返回提交时的信息;
git commit –m “message” -a
4.git pull
在执行push 之前使用pull 确保push之前是最新的
5.git push
push 时会遇到各种问题需要merge 需要编辑后处理冲突问题之后再执行commit再push
如果没有文件冲突问题就会很成功提交
6.git rm
删除不需要的文件;在删除之前执行下pull
然后commit 再执行push
7更多强大命令,在用的时候大家共同研究,更新
执行下git help
$ git help
usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[-c name=value] [--help]
<command> [<args>]
The most commonly used git commands are:
add Add file contents to the index
bisect Find by binary search the change that introduced a bug
branch List, create, or delete branches
checkout Checkout a branch or paths to the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
fetch Download objects and refs from another repository
grep Print lines matching a pattern
init Create an empty git repository or reinitialize an existing one log Show commit logs
merge Join two or more development histories together
mv Move or rename a file, a directory, or a symlink
pull Fetch from and merge with another repository or a local branch push Update remote refs along with associated objects
rebase Forward-port local commits to the updated upstream head
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
show Show various types of objects
status Show the working tree status
tag Create, list, delete or verify a tag object signed with GPG 分支的建立,合并,和删除用的时候再研究。