笔记二、本地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命令》   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命令》     ============================================================ 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 

    原文作者:张昺华-sky
    原文地址: http://www.cnblogs.com/sky-heaven/p/5180600.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞