Git 常用命令合集
图解git中的最常用命令
图解git中的最常用命令如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻。
正文1. 基本用法2. 约定3. 命令详解(1). Diff(2). Commit(3). Checkout(4). Detached HEAD(匿名分支提交)(5). Reset(6). Merge(7). Cherry Pick(8). Rebase4. 技术说明基本用法上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。
· git add files把当前文件放入暂存区域。
· git commit给暂存区域生成快照并提交。
· git reset – files用来撤销最后一次git add files,你也可以用git reset撤销所有暂存区域文件。
· git checkout – files把文件从暂存区域复制到工作目录,用来丢弃本地修改。
你可以用git reset -p,git checkout -p, orgit add -p进入交互模式。
也可以跳过暂存区域直接从仓库取出文件或者直接提交代码。
· git commit -a相当于运行git add把所有当前目录下的文件加入暂存区域再运行。
git commit.· git commit files进行一次包含最后一次提交加上工作目录中文件快照的提交。
并且文件被添加到暂存区域。
· git checkout HEAD – files回滚到复制最后一次提交。
约定后文中以下面的形式使用图片。
绿色的5位字符表示提交的ID,分别指向父节点。
分支用橘色显示,分别指向特定的提交。
当前分支由附在其上的HEAD标识。
这张图片里显示最后5次提交,ed489是最新提交。
master分支指向此次提交,另一个maint分支指向祖父提交节点。
图解git中的最常用命令(2)命令详解Diff有许多种方法查看两次提交之间的变动。
LinuxGIT命令大全linux命令大全
LinuxGIT命令大全linux命令大全语法:Git命令F1:执行info指令,查询指令相关信息,会要求您输入欲查询的名称。
F2:执行cat指令,列出文件内容。
F3:执行gitview指令,观看文件内容。
F4:执行vi指令,编辑文件内容。
F5:执行cp指令,复制文件或目录,会要求您输入目标文件或目录。
F6:执行mv指令,移动文件或目录,或是更改其名称,会要求您输入目标文件或目录。
F7:执行mkdir指令,建立目录。
F8:执行rm指令,删除文件或目录。
F9:执行make指令,批处理执行指令或编译程序时,会要求您输入相关命令。
F10:离开git文件管理员。
-----------------Git命令具体使用-------------------------------Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版本控制工具可以对开发产生如此之多的影响,文章分为两部分,第一部分介绍Git的一些常用命令,其中穿插介绍Git的基本概念和原理,第二篇重点介绍Git的使用技巧,最后会在GitHub上创建一个开源项目开启你的Git实战之旅Git是什么Git在Wikipedia上的定义:它是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。
Git最初被LinuTorvald开发出来用于管理Linu某内核的开发。
每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖于网络和中心服务器。
Git的出现减轻了许多开发者和开源项目对于管理分支代码的压力,由于对分支的良好控制,更鼓励开发者对自己感兴趣的项目做出贡献。
其实许多开源项目包括Linu某kernel,Samba,某.orgServer,RubyonRail,都已经过渡到使用Git作为自己的版本控制工具。
对于我们这些喜欢写代码的开发者嘛,有两点最大的好处,我们可以在任何地点(在上班的地铁上)提交自己的代码和查看代码版本;我们可以开许许多多个分支来实践我们的想法,而合并这些分支的开销几乎可以忽略不计。
Git基本命令-详细版本
Git基本命令-详细版本初始化仓库git init意义:将某个项⽬⽬录变为git操作⽬录,⽣成git本地仓库。
即该项⽬⽬录可以使⽤git管理注意:初始化完毕项⽬⽬录后,添加markdown⽂件:readme.md,便于GitHub阅读项⽬简介查看本地仓库状态git status说明:初始化仓库后默认⼯作在master分⽀,当⼯作区与仓库区不⼀致时会有提⽰将⼯作内容记录到暂存区git add filenamegit add filename1 filename2 ...git add dir(⽂件夹)git add .(提交当前⽬录所有⽂件)git add *(提交所有项⽬⽂件,除【隐藏⽂件】外)将记录从暂存区撤回到⼯作区git rm --cached filename将⽂件同步到本地仓库git commit [file] -m [message]说明:-m 表⽰添加⼀些同步信息,表达同步内容eg:将暂存区所有记录同步到仓库区git commit -m 'add files'忽略⽂件在项⽬路径下,创建⽂件:.gitignore作⽤:配置不需要提交到仓库的⽂件集合在.gitignore⽂件中,增加需要忽略提交的⽂件或⽂件夹eg:.idea (pycharm的系统⽂件)移动或者删除⽂件移动:git mv [file] [path]删除:git rm [files]注意:这两个操作会修改⼯作区内容,同时将操作记录提交到暂存区跟 git add 属于同⼀级别的操作将暂存区或者某个commit点的⽂件恢复到⼯作区git checkout [commit] -- filename-- 是为了防⽌误操作,checkout还有切换分⽀的作⽤⽐较⼯作区⽂件和仓库区⽂件的差异git diff filename查看commit⽇志记录git log作⽤:查看详细的提交⽇志git log --pretty=oneline作⽤:⽐较简化的⽇志显⽰⽅案⽐较⼯作区⽂件和仓库区⽂件的差异git diff filename将暂存区或者某个commit点的⽂件恢复到⼯作区git checkout [commit] -- filename-- 是为了防⽌误操作,checkout还有切换分⽀的作⽤移动或者删除⽂件移动:git mv [file] [path]删除:git rm [files]注意:这两个操作会修改⼯作区内容,同时将操作记录提交到暂存区跟 git add 属于同⼀级别的操作忽略⽂件在项⽬路径下,创建⽂件:.gitignore作⽤:配置不需要提交到仓库的⽂件集合在.gitignore⽂件中,增加需要忽略提交的⽂件或⽂件夹eg:.idea (pycharm的系统⽂件)。
git基本命令
4、版本库管理相关命令
命令 简要说明 git count-objects 显示松散对象的数量和磁盘占用 git filter-branch 版本库重构 git fsck 对象库完整性检查 git fsck-objects* 同义词,等同于 git fsck git gc 版本库存储优化 git index-pack 从打包文件创建对应的索引文件 git lost-found* 过时,请使用 git fsck –lost-found 命令 git pack-objects 从标准输入读入对象ID,打包到文件 git pack-redundant 查找多余的 pack 文件 git pack-refs 将引用打包到 .git/packed-refs 文件中 git prune 从对象库删除过期对象 git prune-packed 将已经打包的松散对象删除 git relink 为本地版本库中相同的对象建立硬连接 git repack 将版本库未打包的松散对象打包 git show-index 读取包的索引文件,显示打包文件中的内容 git unpack-objects 从打包文件释放文件 git verify-pack 校验对象库打包文件
git命令最全使用,冲突解决方法
GIT使用技巧1、版本管理历史集中式版本控制、分布式版本控制CVS -> SVN -> GITGIT由来,出于人道主义精神,免费使用BitMover公司的BitKeeper,Samba的Andrew反向工程(试图破解BitKerper协议),收回免费使用权限,不得不自己开发,2周之后git诞生,2008年github网站上线2、安装配置git config -l 显示所有配置信息git config --global -l 显示所有全局配置信息git config --global '用户名'git config --global user.email '邮箱'git config --global push.default simple/matchingsimple:只推送当前分支matching:推送所有同名分支3、基本操作git init 初始化版本库git add test.txt 添加test.txt文件git add . 添加所有文件git commit -m '信息' 提交修改git commit -a -m '信息' 提交所有修改,相当于默认执行了(git add .) git commit -a --amend 修改上次提交(本地使用,已经推送到仓库的提交不要使用)git status [-s] 查看当前[简短]状态git log [--oneline] 查看提交日志[单行显示]git log [--graph] 查看提交日志[显示提交树]git rm filename 删除工作区文件,并将这次删除放入暂存区git rm --cached file 停止追踪文件,但文件会保留在工作区git mv old new 改文件名,并将这次修改放入暂存区4、文件忽略.gitignore文件语法规则:空行或#开头的行(注释行)将会被忽略test.txt 指定test.txt文件abc/ 忽略abc文件夹/abc 忽略当前目录下的abc,不包括其他目录下的abc*.apk 忽略后缀为apk的文件!a.apk 除了a.apk文件*.[oa] 或略所有.o和.a后缀的文件abc/*.log 忽略abc目录下的所有log文件,不会递归查找abc/**/*.log 忽略abc目录下的所有log文件,会递归查找忽略已经添加到仓库的文件或目录,[--cached]会保留本地文件忽略文件:git rm --cached file_name忽略目录:git rm -r --cached dir_name然后提交推送即可5、分支管理git branch 显示本地所有分支git branch -r 显示远程所有分支git branch -a 显示本地和远程所有分支git branch test [master] [基于master分支]创建test分支git branch -d test 删除本地test分支git push origin --delete testgit branch -dr test 结合上步操作,删除远程test分支git merge test 将test分支合并到当前分支git checkout test 切换到指定test分支git checkout -b test 创建test分支并切换git checkout index.php 将index.php文件的修改撤销git checkout . 将恢复上次commit到工作区git checkout HEAD [index] [将index文件]从版本库中替换暂存区及工作区git reset HEAD index.php 将index.php文件的add操作撤销6、开发流程master 主分支,主要用来版本发布develop 日常开发分支,该分支正常保存了开发的最新代码release master分支的未测试板,比如某期功能开发完成,那么就将develop分支合并到release分支,测试没有问题,并且到了发布日期就合并到master分支,进行发布local 本地功能分支,一般fork自develop分支7、远程分支git clone git仓库克隆一个git仓库git checkout develop 首次clone仓库后看不到其它分支,需要作此操作git pull 从托管服务器拉取并合并,若工作区或暂存区有待处理则无法执行git fetch 从托管服务器拉取,但是不合并git push 向托管服务器推送,若服务器版本有更改则会失败需要先pull8、先本地创建,再远程托管git initgit add .git commit -a -m 'init' 添加修改到暂存区并提交(只能是已经纳入管理的文件)git remote add origin 远程仓库git push -u origin master 首次需要输入用户名和密码(会缓存)git credential-manager uninstall 清除缓存的用户名和密码9、差异比较git diff 工作区与上次提交的差异git diff --cached 暂存区与上次提交的差异git diff --staged 暂存区与上次提交的差异git diff HEAD^ HEAD 上次提交和上上次提交的差异git diff sha1 sha2 两次历史提交的差异10、恢复命令1、git reset [--mixed] <commit-id> 默认选项恢复到指定提交,会修改commit和工作区,再次提交需要add/commit2、git reset --soft <commit-id>恢复到指定提交,会修改commit,再次可以直接commit3、git reset --hard <commit-id>恢复到指定提交,会修改commit和工作区,不会保留任何东西4、git reset HEAD^恢复到上次的提交,即删除最后一次的提交5、git reset HEAD index.php恢复index.php文件的add操作11、SSH登录1、在~/.ssh目录生成公钥私钥对:ssh-keygen [-t rsa]2、将公钥添加到项目中, => Settings => SSH and GPG keys3、之后即可无密码登录(首次登录会有信任提示)12、工作原理:13、标签参数介绍:-a:添加附注标签-m:指定说明信息-d:删除附注标签-l:列表显示标签实例演示:git tag [-l/--list] 列出所有标签git tag v1.0 [commit] 创建基于指定提交的标签git show [tag] 查看tag信息git push [remote] [tag] 提交指定taggit push [remote] --tags 提交所有taggit checkout -b [branch] [tag] 新建一个分支,指向某个tag14、远程同步git fetch [remote] 下载远程仓库到本地仓库,不会改变暂存区和工作区git remote -v 显示所有远程仓库git remote show [remote] 显示某个远程仓库的信息git remote add [name] url 增加一个新的远程仓库,并命名git remote remove name 移除指定的远程仓库git pull [remote] [branch] 下载远程仓库到本地仓库并合并,会改变暂存区/工作区git push [remote] [branch] 上传本地分支到远程仓库git push [remote] --force 强行推送本地分支到远程仓库,即使有冲突git push [remote] --all 推送所有分支到远程git push --set-upstream origin develop为推送本地develop分支建立与远程上游的追踪,首次推送远程不存在的分支时使用15、忽略文件权限的修改现象:首次推送到服务器上的代码,文件全部都修改了,不同系统的文件权限管理的形式不同git config core.filemode false16、冲突解决产生原因:多人的提交修改了相同的文件现象:推送失败,提示有更新的提交,请先拉取(git pull)出现冲突:<<<<<<< HEAD123 本地的修改=======111111 远程的修改>>>>>>> a5a658088bf3ef6bd5124a2eda992b91d66b1340解决方案:修改代码123111111提交推送git commit -a -m '合并冲突'git push17、忽略指定文件的修改忽略指定文件的修改:git update-index --assume-unchanged 文件名取消忽略文件的修改:git update-index --no-assume-unchanged 文件名。
Git常用命令
Git常用命令Git跟踪管理的是修改而并非文件git log --oneline(查看历史消息简介版)git log --oneline--graph(查看历史消息简介版,用图形显示)git log --reverse --oneline(逆序显示)git log --author=cdl --oneline -5(显示作者,最近的五条)git log --oneline --before={3.weeks.ago} --after={2018-1-1} --no-merges(显示三周前,一月一号之后提交的,nomerge来隐藏合并)gitlog --oneline --decorate --graph(decorate可以看到标签)gitrm * -r 批量删除git add -A批量添加(new modified deleted)gitadd .批量添加(new modified deleted)git add –ignore-removal(new modified)git add –u(modified deleted)删除本地版本库:rm -rf .git(先删除.git) rm -rflearngit(再删除版本库)1 gitinit把某个文件夹作为版本库2 git add a.txt把文件加入到版本库(文件需先放在版本库)提交修改3 gitcommit –m “commit 3 files”提交4 gitlog查看历史提交文档5 gitlog –pretty=oneline查看一条主线的日志6 git reset --hard HEAD^ hard后面指定版本(HEAD是当前版本^是当前版本的上一个版本^^是上上个版本)7 git reset --hard a28b6df后面跟上版本id就能回到那个版本(就是commit后面那个id)回退到上一个版本再想回到当前版本就必须指定commit id8 gitreflog记录每一条git命令(包括commit id)git回退只是把当前head指针指向前一个版本,顺便更新工作区文件git status 比较工作区和版本库的差别9 .git称之为版本库,git add是把要提交的修改放在暂存区(stage),提交的文件修改都放在暂存区,然后一次性提交暂存区的所有修改。
常用 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命令详解及常⽤命令整理Git 命令详解及常⽤命令Git作为常⽤的版本控制⼯具,多了解⼀些命令,将能省去很多时间,下⾯这张图是⽐较好的⼀张,贴出了看⼀下:关于git,⾸先需要了解⼏个名词,如下:Workspace //⼯作区Index / Stage //暂存区Repository //仓库区(或本地仓库)Remote //远程仓⼀、新建代码库// 在当前⽬录新建⼀个Git代码库$ git init// 新建⼀个⽬录,将其初始化为Git代码库$ git init [project-name]// 下载⼀个项⽬和它的整个代码历史$ git clone [url]⼆、配置Git的设置⽂件为.gitconfig,它可以在⽤户主⽬录下(全局配置),也可以在项⽬⽬录下(项⽬配置)。
// 显⽰当前的Git配置$ git config --list// 编辑Git配置⽂件$ git config -e [--global]// 设置提交代码时的⽤户信息$ git config [--global] "[name]"$ git config [--global] user.email "[email address]"三、增加/删除⽂件// 添加指定⽂件到暂存区$ 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 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]五、分⽀// 列出所有本地分⽀$ 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]六、标签// 列出所有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]七、查看信息// 显⽰有变更的⽂件$ 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 reflog⼋、远程同步# 下载远程仓库的所有变动$ 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] --all九、撤销// 恢复暂存区的指定⽂件到⼯作区$ 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 pop⼗、其他// ⽣成⼀个可供发布的压缩包$ git archive感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。
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常⽤命令及常见问题解决Git[TOC]Git相关知识点仓库Remote:远程主仓库Repository/History:本地仓库Stage/Index:Git追踪树,暂存区Workspace:本地⼯作区Git问题解决⼀般代码提交流程:⼯作区→git status查看状态→git add .将所有修改加⼊暂存区→git commit -m "提交描述"将代码提交到本地仓库→git push将本地仓库代码更新到远程仓库git add提交到暂存区问题场景1当你改乱了⼯作区某个⽂件的内容,想直接丢弃⼯作区的修改时#丢弃⼯作区的修改git checkout --<⽂件名>场景2当你不但改乱了⼯作区某个⽂件的内容,还添加到了暂存区,想丢弃修改,分两步第⼀步git reset HEAD file#回到场景1第⼆步按场景1操作git commit提交到本地仓库问题1、提交信息出错更改commit信息git commit --amend -m "新提交信息"2、漏提交commit时,遗漏提交部分更新,两种解决⽅案⽅案⼀:再次提交git commit -m "提交信息"#此时,git上会出现两次commit3、提交错误⽂件,回退到上⼀个commit版本,再commit git reset删除指定的commit修改版本库,修改暂存区,修改⼯作区#把暂存区的修改车削掉(unstage),重新放回⼯作区git reset HEAD <⽂件名>#git版本回退,回退到特定的commit_id版本,可以通过git log查看提交历史,以便确定要回退到哪个版本git reset --hard commit_id#将版本回退⼀个版本,不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将⼯作区代码#也回退到这个版本git reset --hard HEAD-1修改版本库,保留暂存区,保留⼯作区#将版本库软回退1个版本,软回退表⽰将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到#暂存区git reset --soft HEAD-1git revert撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为⼀次最新的提交git revert是提交⼀个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容#撤销前⼀次commitgit revert HEAD#撤销前前⼀次commitgit revert HEAD^#撤销指定的版本,撤销也会作为⼀次提交进⾏保存git revert commit_id'git revert'和'git reset'的区别git revert是⽤⼀次新的commit来回滚之前的commit,git reset是直接删除指定的commit在回滚这⼀操作上看,效果差不多。
git常用命令总结
git常用命令总结一、基本命令1. git init:初始化一个新的Git仓库。
2. git clone [url]:从远程仓库克隆一个本地仓库。
3. git add [file]:将文件添加到暂存区。
5. git status:查看工作区、暂存区和本地仓库的状态。
6. git diff:查看工作区和暂存区的差异。
7. git log:查看提交历史。
9. git checkout [branch]:切换到指定的分支。
10. git branch:查看分支列表。
11. git merge [branch]:将指定分支的代码合并到当前分支。
12. git stash:将当前工作区的修改暂存起来。
13. git remote add [name] [url]:添加一个远程仓库。
14. git push [remote] [branch]:将本地仓库的代码推送到远程仓库。
15. git pull [remote] [branch]:从远程仓库拉取最新代码。
16. git fetch [remote]:从远程仓库获取最新的提交。
二、分支管理1. git branch:查看分支列表。
2. git branch [branch]:创建一个新的分支。
3. git checkout [branch]:切换到指定的分支。
4. git merge [branch]:将指定分支的代码合并到当前分支。
5. git branch -d [branch]:删除指定的分支。
6. git branch -m [branch] [new_branch]:重命名分支。
7. git branch -a:查看所有分支,包括远程分支。
四、远程仓库管理1. git remote:查看远程仓库列表。
2. git remote -v:查看远程仓库的详细信息。
3. git remote add [name] [url]:添加一个远程仓库。
4. git remote remove [name]:移除指定的远程仓库。
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常用命令合集
gitdiff--stat#仅仅比较统计信息
查看提交记录
gitlog
gitlog<file>#查看该文件每次提交记录
gitlog-p<file>#查看每次详细修改内容的diff
gitlog-p-2#查看最近两次详细修改内容的diff
gitlog--stat#查看提交统计信息
gitremote add origingit@:robbin/robbin_site.git#设置远程仓库地址
gitpush-u origin master#客户端首次提交
gitpush-u origin develop#首次将本地develop分支提交到远程develop分支,并且track
Git
gitpull#抓取远程仓库所有分支更新并合并到本地
gitpull--no-ff#抓取远程仓库所有分支更新并合并到本地,不要快进合并
gitfetch origin#抓取远程仓库更新
gitmerge origin/master#将远程主分支合并到本地当前分支
gitco--track origin/branch#跟踪某个远程分支创建相应的本地分支
gitco<branch>#切换到某个分支
gitco-b<new_branch>#创建新的分支,并且切换过去
gitco-b<new_branch><branch>#基于branch创建新的new_branch
gitco $id#把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
Git
gitdiff>../sync.patch#生成补丁
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',名称为origi n的远程服务器,以后提交代码的时候只需要使用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基本操作命令合集平时⾃⼰敲敲代码,使⽤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常用命令
Git常用命令本地工作区本地仓库(暂存区)远程服务器Clone想对某个项目出一份力,可以先把该项目的Git仓库复制一份出来,这就需要用到git clone 命令。
如果你熟悉其他的VCS 比如Subversion,你可能已经注意到这里使用的是clone 而不是checkout。
这是个非常重要的差别,Git收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。
Add:添加到暂存区在git add后面可以指明要跟踪的文件或目录路径。
如果是目录的话,就说明要递归跟踪该目录下的所有文件。
(译注:其实git add的潜台词就是把目标文件快照放入暂存区域,也就是add file into staged area,同时未曾跟踪过的文件标记为需要跟踪。
)Git add这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件(上面的情况),或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等commit:提交到服务器暂存区域已经准备妥当可以提交了。
在此之前,请一定要确认还有什么修改过的或新建的文件还没有git add过,否则提交的时候不会记录这些还没暂存起来的变化。
Pull一般我们运行 git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。
Push项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。
Gitignore一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。
通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
我们可以创建一个名为 .gitignore的文件,列出要忽略的文件模式文件 .gitignore的格式规范如下:1.所有空行或者以注释符号#开头的行都会被Git忽略。
2.可以使用标准的glob 模式匹配。
Git版本控制常用命令与技巧
Git版本控制常用命令与技巧作为一款开源的分布式版本控制系统,Git已经成为了开发者必不可少的工具之一。
Git可以帮助开发者跟踪代码的变化、恢复版本以及协作开发等。
本文将介绍Git版本控制的常用命令与技巧,有助于更好地使用Git进行代码管理。
一、Git基础命令1. git init初始化一个Git仓库,会在本地目录下创建一个.git子目录,用于存放版本库(版本库包括各种对象和索引等)。
2. git add将当前工作目录下的文件添加到Git的暂存区中。
3. git commit将当前暂存区的所有内容提交到Git版本库中。
4. git status查看当前工作目录的状态,包括哪些文件被修改、添加或删除。
5. git log查看当前版本库的提交历史,包括每个提交的作者、时间、提交信息等。
6. git diff比较当前工作目录和暂存区/版本库中的文件差异。
7. git pull将远程仓库的变化拉取到本地版本库中。
8. git push将本地版本库的变化推送到远程仓库中。
二、Git分支命令1. git branch列出当前版本库的所有分支。
2. git checkout切换到指定分支。
3. git merge将指定分支合并到当前分支中。
4. git rebase将当前分支的提交应用于指定分支上,可以实现将分支历史重写为线性。
5. git cherry-pick将指定的提交应用于当前分支上。
三、Git标签命令1. git tag列出当前版本库的所有标签。
2. git tag -a创建一个带注释的标签。
3. git tag -d删除指定的标签。
四、Git远程操作命令1. git clone从远程仓库中克隆出一个本地版本库。
2. git fetch从远程仓库中拉取最新代码,但不进行合并。
3. git merge将远程分支合并到当前分支中。
4. git pull将远程仓库的变化拉取到本地版本库,并合并到当前分支中。
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命令大概有以下几类:1.始化和配置:这些命令是用于初始化Git仓库,生成SSH密钥,配置用户名和邮箱等等。
2.常管理:这些命令常用于日常管理文件、提交文件、查看仓库历史等等。
3.程分支:这些命令是用于控制远程仓库,像是更新仓库和推送文件。
4.签:这些命令用于标记重要的版本。
常用的命令有:1.始化 git init2.看文件状态 git status3.加文件 git add4.交文件 git commit5.看提交历史 git log6.销修改 git reset7.建远程仓库 git remote -v8.隆远程仓库 git clone9.送文件 git push10.取文件 git pull11.建标签 git tag12.支管理 git branch13.看分支 git branch -r14.并分支 git mergeGit命令是使用Git进行版本控制的基础,要使用Git进行版本控制,要掌握这些常用的Git命令,非常有必要。
要好好学习Git,最好的方式就是实践。
下载一个Git的GUI客户端,这样可以方便的查看仓库的历史,并且可以清晰的看到每一次提交的内容改变,从而更快的掌握Git相关的操作。
当你已经熟悉基本的Git命令后,可以深入学习Git工作流,比如git-flow、github-flow等,从而让团队中的版本控制更加有效率,更加规范。
Git不仅仅是一款分布式版本控制工具,它在很多领域也都有非常大的作用,比如搭建网站,可以使用Git进行本地开发,然后推送到服务器,或者进行远程多人协作。
它还可以搭配CI/CD工具,实现自动构建、部署,从而更加方便的管理项目。
常用的git命令
常用的git命令git是一个开源的版本控制系统,允许软件开发人员来跟踪、管理代码的变更,并允许与他人共享这些变更。
它拥有一系列全面的功能,可以实现可靠的、快速、有效地管理代码。
尽管它有许多功能,其中一些比较复杂,但它也有一些常用的命令,掌握它们可以让人更加有效地管理和修改代码。
一般来说,git的常用命令可以分为四大类:1、安装和配置类:以下命令用于安装和配置git:git config:用于设置用户名、邮箱等信息;git init:用于在本地初始化git仓库;git clone:用于将远程仓库克隆到本地。
2、查看和状态检查类:以下命令用于查看和状态检查:git log:用于查看历史提交记录;git status:用于查看工作树的当前状态;git show:用于查看提交详细信息;git diff:用于查看文件之间的差异。
3、提交和合并类:以下命令用于提交修改和合并分支:git add:用于将文件从工作树添加到索引中;git commit:用于将索引的文件提交到仓库;git merge:用于合并两个分支;git pull:用于将远程仓库的更新合并到当前分支。
4、回滚类:以下命令用于回滚更改:git reset:用于取消暂存的文件;git revert:用于撤销某次特定的提交;git clean:用于清除本地仓库中未跟踪或未暂存的文件。
另外,还有一些不太常用、但也很实用的命令,比如 git stash (用于暂存当前工作树)、git bisect(用于查找bug原因的二分查找)等。
以上就是git的常用命令,掌握它们可以让人更加有效地管理和修改代码,提高开发效率。
虽然它有许多功能,但只要理解它的基本原理,就可以掌握它,使用它来实现代码管理和版本控制,并且还能与他人分享变更。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
====== Git 常用命令合集======
=== 1.Git 文档===
Git 中文文档观看地址:/progit/
=== 2.Git 基本指令===
git config --global //设置全局用户名,不加gloabl为局部
git config --global user.email //设置全局用户邮箱。
git --bare init //初始化git 不生成.git目录,没有工作空间(work tree)。
远程仓库初始化时使用。
git init //初始化git,生成.git目录
cat .gitignore //根据规则配置忽略跟踪文件。
git clone url //从url路径克隆项目到本地仓库。
git status //查看工作目录下文件状态。
git add file //将文件或者路径添加到暂存区。
git reset HEAD file //将文件撤出暂存区。
git checkout --file //取消对文件的修改。
git rm file //删除文件-cached 不删除本地文件-f强制删除
git diff //查看修改文件和暂存区文件的差异-staged //暂存文件与上次提交的差异。
git commit -am “txt” //将暂存区的和已修改的文件提交进仓库txt为记录。
git log //查看提交历史可通过gitg查看。
git fetch pd //从远程仓pd库抓取数据到本地git pull。
git push pd master //将本地master分支推向pd远程仓库。
git push [远程仓库名][本地分支]:[远程分支]
/××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
如果远程仓库不是bare init的情况下,当本地仓库push远程仓库所在分支时结果
不会相应在work tree上。
如果远程仓库不在push的分支上则可以。
(远程仓库不
需要work tree)
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××/ === 3.Git remote 指令===
git remote -v //查看当前远程仓库的名字和地址的信息列表。
git remote show wepu //查看远程仓库wepu的信息
git remote add test url //添加名为test的远程仓库。
git remote rename pd paul //将远程仓库pd名字改为paul
git remote rm paul //移除远程仓库paul
=== 4.Git branch 指令===
分支是从某个提交对象往回看的历史,本质是指向commit对象的可变指针(HEAD),每次提交会自动向前。
git branch //查看当前仓库分支
git branch -v //增加显示最后一个提交对象的信息
git branch -a //查看远程仓库分支
git checkout -b A //创建并指向A分支= git branch A + git checkout A
git branch -d A //删除A分支
git push pd :A //删除远程仓库上的分支A ,省略本地分支详细格式见基本指令
git merge A //把A分支合并入当前分支,形成一次新的提交。
当两个分支都对某个文件相同行修改数据
需要工解冲突。
解决完之后执行add和commit
git rebase A //把A分支合并入当前分支,形成一次新的提交当两个分支都对某个文件相同行修改数据需
要人工解冲突。
解决完之后add.rebase –continue
git rebase –onto master A B //取出B分支,找出B和A分支的共同祖先之后的变化,以master为基地分支进行rebase
git cherry pick commitID //将别的分支的提交放在当前分支。
先git log确认想要移动提交对象的commitID
git stash //搁置当前所有的改动,先git add.将所有的改动加入暂存区,然后git stash save "detial"
这时工作平台就回到改动前的版本了,如需要恢复:git stash apply
/××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××rebase:如果分支中的提交对象已经发布到公共仓库,新手最好不要对该分支进行
rebase操作。
因为rebase会抛弃一些现有的提交对象,然后创造出不同的新的提
交对象。
同步代码后可能会出现混乱
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××/。