How to use GIT?

来源:互联网 发布:c语言预指令 编辑:程序博客网 时间:2024/05/16 12:28
Branch operation:
Create a local branch:
 git branch new_branch_name  
Delete a local branch:
 git branch -d branch_name  
Push a local branch to remote:
 git push origin branch_name  
Delete a remote branch:
 git push origin :branch_name  

Look for branch information:
查看所有的branch
只查看remote 的branch
查看remote branch的详细信息
只显示branch的tag
 git branch -a   git branch -r   git remote show origin   git ls-remote  
switch branch:
 git checkout branch_name 
 git checkout -b fixes 1b6d          // -b表示新建branch
查看当前config:
git config -e          // 查看所有branch的信息

更改reposite:
git remote set-url origin git@github.com:KLabProject/katatema-ios-jp.git

Commit
 git commit -a          // Save changed files to stage(temporary)

Set email:
git config user.email hoge-h@klab.com

See Log:
 git log
git reflog


Reset old commit:

  • git reset --hard: 载一个旧记录并删除所有比之新的记录。
  • git checkout: 载一个旧记录,但如果你在这个记录上玩,游戏状态将偏离第轮的较新状态。你现在打的所有游戏记录会在你刚进入的、代表另一个真实的分支

在法庭上,事件可以从法庭记录里敲出来。同样,你可以检出特定提交以撤销。

$ git commit -a

$ git revert 1b6d

讲撤销给定哈希值的提交。本撤销被记录为一个新的提交,你可以通过运行 git log 来确认这一点。

载文件

得到一个由Git管理的项目的拷贝,通过键入:

$ git clone git://server/path/to/files

例如,得到我用来创建该站的所有文件:

$ git clone git://git.or.cz/gitmagic.git

们很快会对 clone 命令谈的很多。

到最新

如果你已经使用 git clone 命令得到了一个项目的一份拷贝,你可以更新到最新版,过:

$ git pull git@github.com:klab-ou-h/GithubTest.git

把本地改动捡入到中心仓库:

$ git push

轻快多任务

比如你想并行开发多个功能。那么提交你的项目并运行:

$ git clone . /some/new/directory

Git使用硬链接和文件共享来尽可能安全地创建克隆,因此它一眨眼就完成了,因此你现在可以并行操作两个没有相互依赖的功能。例如,你可以编辑一个克隆,同时编译另一个。感hardlinking,本地克隆比简单 备份省时省地。

现在你可以同时工作在两个彼此独立的特性上。比如,你可以在编译一个克隆的时候编 辑另一个克隆。任何时候,你都可以从其它克隆提交并拖拽变更。

$ git pull /the/other/clone HEAD

git pull origin KESHIN-336 // originKESHIN-336分支pull到当前分支

 4  分支巫

$ git checkout -b boss  # Craete a new branch boss and switch to it.

$ git checkout master  # 切到文件的原先版本

快速修

你正在做某件事的当间,被告知先停所有的事情,去修理一个新近发现的臭虫,这个臭虫在提交 `1b6d…`

$ git commit -a

$ git checkout -b fixes 1b6d

那么一旦你修正了这个臭虫:

$ git commit -a -m "Bug fixed"

$ git checkout master

并可以继续你原来的任务。你甚至可以合并到最新修订:

$ git merge fixes   //Merge branch fixes into the current branch.

合并

们很久之前就遇到合并了。 pull 命令取出提交并合并它们到你的当前分支。如果你没有本地变更,那这个合并就是一个,相当于中心式版本控制系统里的一个弱化的获取最新版本操作。但如有本地变更,Git将自动合并,并报告任何冲突。

通常,一个提交只有一个父提交,也叫前一个提交。合并分支到一起产生一个至少有两个父的提交。这就引出了问题: HEAD~10 真正指哪个提交?一个提交可能有多个父,那我们跟哪个呢?

原来这个表示每次选择第一个父。这是可取的,因为在合并时候当前分支成了第一个父;多数情况下我们只关注我们在当前分支都改了什么,而不是从其他分支合并来的变更。

你可以用插入符号来特别指定父。比如,显示来自第二个父的日志:

$ git log HEAD^2

你可以忽略数字以指代第一个父。比如,显示与第一个父的差别:

$ git diff HEAD^

你可以结合其他类型使用这个记号。比如:

$ git checkout 1b6d^^2~10 -b ancient

开始一个新分支 “ancient” ,表示第一个父的第二个父的倒数第十次提交的状态。

$ git branch -d part2  # 删除分支“part2”

$ git branch -m master part2  # 重命名“master”分支“part2”

$ git branch master HEAD~7    # 以七次前提交建一个新的“master”

分支 master 只有第一部分内容,其他内容在分支 part2 们现在后一个分支; 们创建了 master 分支还没有切换过去,因为我们想继续工作在 part2 这是不寻常的。直到现在,我们已经在创建之后切换到分支,如:

$ git checkout HEAD~7 -b master  # 创建分支,并切换过去。


 5  关于历史

认错

刚提交,但你期望你输入的是一条不同的信息?那么键入:

$ git commit --amend    //更改上一条commit信息

来改变上一条信息。意识到你还忘记了加一个文件?运行git add来加,然后运行上面的命令。

希望在上次提交里包括多一点的改动?那么就做这些改动并运行:

$ git commit --amend -a