笔记二、本地git命令

参考书籍:

    《Pro Git》中文版.pdf

 

git init           // 建立一个git仓库, 本地目录为工作目录, .git目录是中央数据目录

git init --bare    // 建立一个git裸库,本地目录为中央数据目录

 

git clone /home/git/test.git    // 同一机器,直接目录clone, 可指定clone后名称

git clone ssh://cxt@192.168.3.254/home/git/test.git  // 远程git目录clone,使用ssh协议,也可以使用http协议,git://协议

 

git config --global user.email xiaotaohuoxiao@163.com   // 设置用户email,强制性的

git config --global user.name  cxt                      // 设置用户名称

git config --list                                       // 查看已有配置信息

 

git status         // 查看git文件状态,未保存本地数据目录

 

git add file       // 保存file文件至本地数据目录 .git 暂存区

git add .          // 保存所有文件(修改,新增,删除等) 到 .git 暂存区

git add -u         // 只保存修改modify文件到 .git 暂存区

 

git rm --cache file  // 删除保存到 本地.git暂存区 的文件

 

git commit            // 项目提交到 .git, 进入交互界面提交编辑log

git commit -m string  // 项目提交到 .git,提交log为 string,提交后出现字符串为SHA-1校验和(20Bytes)

git commit --amend    // 撤销commit,前提是撤销之前未做任何改动

 

git log               // 查看提交历史

git log -p            // 展开显示每次提交的内容差异

git log -2            // 显示最近的两次更新

git log --stat        // 显示行数变化统计,查看做了哪些改动

git log --pretty=xxx  // 显示风格,=oneline,放在一行显示

 

git push origin master  // 推送,将本地 .git信息推送至 远程主机 .git中央数据目录

git pull origin master  // 取回,将远程 .git信息取回至本地主机 .git,同时更改当前工作目录文件

 

 

=========================================================================================

vi .gitignore       // 忽略某些文件,不要忽略 .gitignore,这样其他clone就能生效忽略

-----------------

*.[oa]              // 忽略所有 .o , .a文件

*~                  // 忽略所有存档文件

doc/                // 忽略doc目录下所有文件

 

 

git diff            // 对比文件,对比还没有 git add缓存文件内容

git diff --cache    // 对比这次修改与上一次commit快照内容

 

git remote          // 查看当前远程仓库, 仓库信息位置在 .git/config

git remote -v       // 显示对应克隆地址

git remote -r       // 显示远程分支

git remote add cxt /home/work/test   // 裸库可用来添加远程仓库目录(远程目录必须有 .git),非裸库也可以指定

                    // cxt是远程仓库的本地分支名字

git remote rename cxt sky  // 将远程仓库本地分支名称改为 sky

 

 

git branch f_cxt       // 创建f_cxt新分支,当前分支保存在 .git/HEAD

git checkout f_cxt     // 切换到f_cxt分支

git checkout -b f_cxt  // 创建f_cxt新分支, 并切换

git branch -d f_cxt    // 删除f_cxt分支

 

 

合并:

====================================

git checkout master

git merge f_cxt        // 将f_cxt更改合并到 master当前分支中,master未修改时,合并成功;master修改后,合并错误,需要解决冲突 conflicts

 

 

解决冲突:

====================================

$ git merge f_cxt

Auto-merging test.c

CONFLICT (add/add): Merge conflict in test.c

Automatic merge failed; fix conflicts and then commit the result.    // 需要解决冲突

 

此时系统处于合并未解决状态:

    

 

git status        // 查看冲突,列出所有未合并状态文件,并且文件内容有变化

 

$ cat test.c

------------------>

<<<<<<< HEAD

hahaha

=======     // 文件隔开

111

>>>>>>> f_cxt

 

修改冲突:

vi test.c

------------------>

hahaha       // 删除<<<<  >>>>  ===== 行,并且采取最终方案

 

 

git add test.c     // 将test.c标记为 已解决

 

git commit         // 提交merge更新

                   // 做法为删除原有两个test.c,新建修改后的test.c

 

 

============================================================

git branch -v           // 查看各个分支最后一次commit信息

 

git fetch origin        // 同步远程服务器尚未拥有的数据,更新origin/master指针

 

git push origin serverfix:aaa    // 将本地仓库serverfix分支推送至远程仓库的远程分支aaa,若没有aaa,则创建

 

git checkout -b serverfix origin/aaa  // 新建serverfix新分支,内容与远程origin/aaa一致,并且进行分支切换

 

git push origin :aaa    // 删除远程aaa分支

 

 

===============================================================

git rebare aaa          // 把aaa分支修改合并到当前分支,会将所有commit节点合并过来

 

出现冲突,解决冲突

git add .               // 提交冲突

git rebare --continue   // 完成rebare合并

 

git rebare --abort      // 终止rebare合并,回到rebare前状态

git reset --hard 版本回退到最新

 

git reset a.c 是把git仓库的a.c同步到暂存区中

git checkout a.c是把暂存区的a.c同步到工作区

 

原文: http://www.tech126.com/git-fetch-pull/ 

Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

    
git fetch origin master
git log -p master..origin/master
git merge origin/master

    以上命令的含义:
   首先从远程的origin的master主分支下载最新的版本到origin/master分支上
   然后比较本地的master分支和origin/master分支的差别
   最后进行合并
   上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp 
git merge tmp

    从远程获取最新的版本到本地的test分支上
   之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并

结束

 

==================================================================

转自:http://www.yiibai.com/git/home.html

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。

$ git pull <远程主机名> <远程分支名>:<本地分支名>

比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

$ git pull origin next:master

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

$ git pull origin next

上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。

$ git fetch origin
$ git merge origin/next

在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。

Git也允许手动建立追踪关系。

git branch --set-upstream master origin/next

上面命令指定master分支追踪origin/next分支。

如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

$ git pull origin

上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。

如果当前分支只有一个追踪分支,连远程主机名都可以省略。

$ git pull

上面命令表示,当前分支自动与唯一一个追踪分支进行合并。

如果合并需要采用rebase模式,可以使用–rebase选项。

$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

==============================================================

 

 

下面总结一下git reset的各个选项吧:

1 git reset –soft 只撤销commit,保留working tree和index file。

2 git reset –hard 撤销commit、index file和working tree,即撤销销毁最近一次的commit

3 git reset –mixed 撤销commit和index file,保留working tree

4 git reset和git reset –mixed完全一样

5 git reset –用于删除登记在index file里的某个文件。

 

git config配色方案

默认情况下,ubuntu下的终端中,git没有颜色,可以使用如下命令给git配色
git config --global color.status auto 
git config --global color.diff auto 
git config --global color.branch auto 
git config --global color.interactive auto 

 

 

 

对比不同分支的文件列表

git diff hash1 hash1 --stat

如果是branch的话

git diff branch1 branch2 --stat

加上 --stat 是显示文件列表, 否则是文件内容diff

 

Git常用操作命令收集:

1) 远程仓库相关命令

检出仓库:$ git clone git://github.com/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]

 

2)分支(branch)操作相关命令

查看本地分支:$ git branch

查看远程分支:$ git branch -r

创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支

切换分支:$ git checkout [name]

创建新分支并立即切换到新分支:$ git checkout -b [name]

删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项

合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并

创建远程分支(本地分支push到远程):$ git push origin [name]

删除远程分支:$ git push origin :heads/[name]

我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。

    如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

$ git push origin
test:master         // 提交本地test分支作为远程的master分支
//好像只写这一句,远程的github就会自动创建一个test分支
$ git push origin
test:test              //
提交本地test分支作为远程的test分支

如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

$ git push origin
:test              // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心

3)版本(tag)操作相关命令

查看版本:$ git tag

创建版本:$ git tag
[name]

删除版本:$ git tag -d
[name]

查看远程版本:$ git tag -r

创建远程版本(本地版本push到远程):$ git push origin
[name]

删除远程版本:$ git push origin
:refs/tags/[name]

 

4) 子模块(submodule)相关操作命令

添加子模块:$ git submodule add [url]
[path]

如:$ git submodule add
git://github.com/soberh/ui-libs.git
src/main/webapp/ui-libs

初始化子模块:$ git submodule init
----只在首次检出仓库时运行一次就行

更新子模块:$ git submodule update
----每次更新或切换分支后都需要运行一下

删除子模块:(分4步走哦)

1)$ git rm --cached
[path]

2)
编辑“.gitmodules”文件,将子模块的相关配置节点删除掉

3) 编辑“.git/config”文件,将子模块的相关配置节点删除掉

4) 手动删除子模块残留的目录

 

5)忽略一些文件、文件夹不提交

在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如

target

bin

*.db

 

 

git操作-删除文件

转自:http://www.cnblogs.com/springbarley/archive/2012/11/03/2752984.html

日期:2012-05-20 来源: bg090721 分享至:

git删除文件

rm add2.txt

git rm add2.txt

git commit -m "rm test"

git push web

 

-----------at server

cd /var/www/foo.git;sudo git update-server-info

 

------------检查删除效果

cd;rm foo3 -rf;git clone http://[某ip]/foo.git foo3

 

------------更新已经存在的local code

cd;cd foo2

git remote add web [某user]@[某ip]:/var/www/foo.git/

git pull web master

 

git diff aa  package/prolin/libxui/src/Makefile 

 

一次性清除本地与服务器不同的文件

git clean -d -fx

git clean -d -fx package/prolin/libxui/src/Makefile 

时间: 2024-09-21 15:21:32

笔记二、本地git命令的相关文章

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 显示远程

git命令添加 修改 删除 冲突解决办法

  如果对git命令行不熟悉的话,用git图形界面工具,就比较合适了.建议使用tortoisegit这样的工具,命令行从学习到灵活掌握的时间成本比较高的. 1,添加 # git clone git@192.168.10.202:develop/test.git # cd test # touch test.txt //测试文件 # git add test.txt //git添加文件 # git commit -m 'test' //添加到本地版本库 # git push //push到远程 如

常用 Git 命令清单

我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新建代码库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-nam

android Git命令家底儿及Git数据通信原理详解

声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载.        现在大部分使用的都是SVN,也有一部分迁移了Git,虽然挺好的,不过还有其它很多版本控制的工具,并没有谁最好用,最重要的是适合自己的公司与团队,效率和团队是成正比了,重要的不是武器,虽然武器也挺重要的,不过最重要的还是配"剑"者,不过要是对Git没接触过或者认识不够的话,我想,这篇"华序"写的文章足以让你对Git有所认识了,不过了解下就可以了,凡事不要太执着了,下面,就让我们进入正文吧.

30分钟Git命令 从入门到放弃

给新手或熟悉图形工具的老鸟们看的教程.方便大家快速入门. git 现在的火爆程度非同一般,它被广泛地用在大型开源项目,团队开发,以及独立开发者,甚至学生之中. 初学者非常容易被各种命令,参数吓哭.但实际上刚上手你并不需要了解所有命令的用途.你可以从掌握一些简单,强大的命令开始,逐步去学习.(这就是这篇文章要讲的).好了,上来! 基本了解 git命令是一些命令行工具的集合,它可以用来跟踪,记录文件的变动.比如你可以进行保存,比对,分析,合并等等.这个过程被称之为版本控制.已经有一系列的版本控制系统

常用 Git 命令清单【转】

转自:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 作者: 阮一峰 日期: 2015年12月 9日 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:

2015继续任性——不会Git命令,照样玩转Git

最近事情比较多,一眨眼,已经半个月没有写博客了~不得不感慨光阴似箭啊!当然,2015年有很多让我们期待的事情,比如win10正式版..NET开源.VS2015等等.想想都让人兴奋啊~~ 为了迎接VS2015正式版的到来,我们要更加努力的学习.今天,我们来说一下在VS2013中如何使用Git来管理项目,你不会Git命令也没关系,有了VS2013这个神器,我们即使不会Git命令也可以完美的使用Git来完成项目的管理和发布.    一.将VS2013项目托管到Git   现在的开源项目越来越多,我们会

当执行Git命令时,Git做了什么

认识GIT的存储类型 Git存储类型主要有4种,blob,tree,commit,tag,他们以压缩的形式存储在.git/objects目录当中.其中blob和tree构成其完整的文件存储系统,类似于操作系统的文件系统.commit和tag则维护提交和标记等信息. 在Git的存储模型当中有一个原则,只要类型和内容相同,就会被认定为同一个文件,无论在工作区当中文件有多少份拷贝,在git库里面只会存有一份,并以其类型,大小和内容串接后的内容结果的散列值作为其文件名.其格式为: #TYPE# #SPA

常用git命令教程

  常用的git命令: 安装之后第一步安装 Git 之后,你要做的第一件事情就是去配置你的名字和邮箱,因为每一次提交都需要这些信息: git config --global user.name "bukas" git config --global user.email "bukas@gmail.com" 获取Git配置信息,执行以下命令: git config --list 创建版本库什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个