Git使用说明
Linus为Linux Kernel Project发起的版本控制项目。 |
通过git pull更新仓库,使用git init-db初始化自己的仓库。 |
开发人员需要为git仓库配置相关信息,这样在提交代码时,这些信息会自动 |
git config user.name "your name" |
git config user.email yourname@email_server |
git config core.editor vim |
git config core.paper "less -N" |
git config color.diff true |
git config alias.co checkout |
git config alias表示,可以用git co代表git checkout。git var -l可以查看 |
开发人员在本地进行开发后,可以使用git diff查看改动。 |
除了直接比较当前开发后的改动外,git diff还可以: |
git diff tag 比较tag和HEAD之间的不同。 |
git diff tag file 比较一个文件在两者之间的不同。 |
git diff tag1..tag2 比较两个tag之间的不同。 |
git diff SHA11..SHA12 比较两个提交之间的不同。 |
git diff tag1 tag2 file or |
git diff tag1:file tag2:file 比较一个文件在两个tag之间的不同。 |
ORIG_HEAD用于指向前一个操作状态,因此在git pull之后如果想得到pull的 |
git diff --stat 用于生成统计信息。 |
git diff --stat ORIG_HEAD |
--check 检查能否正常打上补丁,-v verbose模式, -R reverse模式,反打补丁。 |
git log tag1..tag2 查看两个tag之间的日志。
|
git log -p tag1..tag2 file 查看一个文件在两个tag之间的不同。
|
git log tag.. 查看tag和HEAD之间的不同。
|
git commit -a -e 提交全部修改文件,并调用vim编辑提交日志。 |
git reset HEAD~1 撤销最后一次提交。 |
git reset --hard HEAD^ 撤销最后一次提交并清除本地修改。 |
git reset SHA1 回到SHA1对应的提交状态。 |
git add -a 添加所有文件。除了.gitignore文件中的文件。 |
git ls-files -m 显示修改过的文件。 |
git中有四种对象:blob、tree、commit、tag。 |
blob代表文件,tree代表目录,commit代表提交历史,tag代表标签。 |
这四种对象都是由SHA1值表示的。在仓库的.git目录中保存了git管理仓库 |
git ls-tree HEAD file 显示file在HEAD中的SHA1值。 |
git cat-file -t SHA1 显示一个SHA1的类型。 |
git cat-file type SHA1 显示一个SHA1的内容。type是blob、tree、commit、tag之一。 |
git format-patch -1 生成最后一个提交对应的patch文件。 |
git am < patch 把一个patch文件加入git仓库中。 |
git am --resolved 如果有冲突,在解决冲突后执行。 |
git am --skip 放弃当前git am所引入的patch。 |
git diff 如果有冲突,直接使用diff查看, |
git update-index 更新修改后的文件状态。 |
git commit -a -e 提交为解决冲突而修改的代码。 |
git branch new_branch 创建新的分支。 |
git branch -d branch 删除分支。 |
git checkout branch 切换当前分支。-f参数可以覆盖未提交内容。 |
有时更新公共代码仓库使用patch的方式,或者直接 |
的方式更新每个人的代码。使用git pull的方式需要 |
git daemon --verbose --export-all --enable=receive-pack --base-path=/repo |
git request-pull start url 用于产生本次pull请求的统计信息。 |
git clean -dxf 用于清除未跟踪文件。 |
git clean -dnf 可以显示需要删除的文件,但不包括被.gitignore忽略的。 |
git reset --hard HEAD 用于清除跟踪文件的修改。 |
Git 配置
Git命令的使用,一般有两种两种形式,一种是git后面带参数(如:git add),另一种是直接减号连接的一条命令(如:git-add),后面讲解全部使用后者,这样可以避免空格的使用带来的问题。
- $ ssh-keygen -b 1024 -t dsa
- 生成密钥,用户通信加解密。1024为生成密钥大小,dsa为指定的加密类型。如果接受默认设置,那么私钥和公钥文件分别位于:~/.ssh /id_dsa和~/.ssh/id_dsa.pub。用户需要向服务器管理员提供公钥(id_dsa.pub),在用户同步版本库时对用户进行身份认证。用户必须妥善保管私钥。
- $ git-config user.name jianjun
- 配置用户名,在生成补丁、日志时使用。git-config命令带--global选项是对所有用户信息进行配置,默认只针对对当前用户。
- $ git-config user.email jianjun@zeuux.org
- 配置用户邮件,用于发送补丁。
- $ git-config sendemail.smtpserver /usr/local/bin/msmtp
- 配置补丁邮件的发送软件,这里也可以用其他的,如sendmail。
- $ git-config --list
- 用户可以通过git-config的其他选项来对git做其他配置,--list可以查看用户已经选项。如:
$ git-config --list user.name=jianjun user.email=jianjun@zeuux.com sendemail.smtpserver=/usr/bin/msmtp diff.color=auto pack.window=64 merge.summary=true
3 Git 使用
- 创建一个版本库
-
$ mkdir myDir $ cd myDir $ git-init-db Initialized empty Git repository in .git/
创建工作目录 myDir,进入工作目录,并初始化版本库。此时会在myDir/目录下生成一个名为.git的目录,里边有三个文件,分别是存放指向项目当前分支索引信息的HEAD文件、包含项目所有对象的object子目录、保存指向对象索引的refs目录。
- 植入内容跟踪信息
-
$ echo "new world" > newfile $ git-add newfile
创建新文件newfile,写入"new world",并用git-add命令将此文件加入到版本库文件索引当中。
- 提交内容到版本库
-
$ git-commit -m "add newfile" newfile Created initial commit 5ce224d: add newfile 1 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 newfile
把前面的修改提交到版本库中,前提是已经用git-add命令把此文件加入到版本库文件索引当中。
- 查看当前的工作
-
$ git-status # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # new file: h $ echo "Love zeuux" >> newfile $ git-diff diff --git a/newfile b/newfile index e83176b..7d02259 100644 --- a/newfile +++ b/newfile @@ -1 +1,2 @@ new world +Love zeuux
git-status可查看当前分支状态,git-diff查看当前分支更改情况。
- 管理分支
-
$ git-branch mybranch $ git-checkout mybranch Switched to branch "mybranch" $ git-branch -D mybranch Deleted branch mybranch.
创建名为mybranch的分支,并把以后工作转移到这个分支上开展。git-branch带-D选项为删除指定的分支,不能删除用户所在当前分支,必须用git-checkout切换到其他分支才行。
- 查看项目的发展变化和比较差异
-
$ git-show-branch * master mybranch $ git-whatchanged commit 7182ae4912487692d4f91ded1e74d99e0fc12e49 Author: Jianjun Kong Date: Tue Jul 8 23:45:27 2008 +0800 add new line :000000 100644 0000000... 6991a4a... A h commit cc08d852365d605520d71a3352841a7eadf64428 Author: Jianjun Kong Date: Tue Jul 8 23:42:52 2008 +0800 update :100644 100644 7d02259... 033d3e5... M newfile $ git-diff mybranch diff --git a/h b/h new file mode 100644 index 0000000..6991a4a --- /dev/null +++ b/h @@ -0,0 +1,2 @@ +helo
git-show-branch用来列出当前版本库中的所有分支,git-whatchanged可以列出项目开发中的修改历史。git-dff mybranch是来比较当前分支与mybranch分支的差异的,当然也可使用 git-diff mybranch anotherbranch对任意两个分支做对比。
- 合并两个分支
-
$ git-checkout master $ git-merge "Merge work in mybranch" mybranch
切换到master分支,并把mybranch上的工作合并到master上来。此时有可能有冲突无法合并,会给出警告,用户可根据提示手动合并一些文件。
- 逆转与恢复
-
$ git-reset --soft HEAD^ 逆转上次提交的版本进度 1e74d99e0fc12e49 强行逆转到索引指定的版本,--hard选项要慎重使用,有事可能破坏正常文件。 $ git-revert 也可撤销上次对版本库的提交,但这本身也会产生一个commit,用得多了会使log看起来不那么干净。
- 用 Git 协同工作
-
$ git-clone git://repo.or.cz/xylftp.git 克隆远程版本库 $ git-push git+ssh://kongjianjun@repo.or.cz/srv/git/pigeons.git master:master 将同步本地版本库中master分支同步到远程服务器上版本库的master分支 $ git-pull git+ssh://kongjianjun@repo.or.cz/srv/git/pigeons.git master:master 将远程服务器上的版本库中的master分支同步到本地版本库的master分支 $ git-fetch orign 克隆上游版本库 $ git-format-patch -s orign 0001-add-new-line.patch 对比当前分支与orign生成补丁,-s选项指定生成补丁中带有Signed-off-by: jianjun $ git-send-email --to zeuux-www@zeuux.org --cc wangcong@zeuux.org 0001-add-new-line.patch 将补丁0001-add-new-line.patch发送到zeuux-www@zeuux.org,并抄送一份给wangcong@zeuux.org
- 为版本库打包
-
$ git-repack 将对象打包,并保存在 .git/objects/pack 目录当中 $ git-prune-packed 清楚那些已经被打过包的原始的对象
- 特殊文件
- 工作目录myDir/下有一个名为.gitignore的文件,用来排除一些文件,包括程序编译的中间文件和目标文件等,当然也可包括它自己在内。没用使用git-add添加的文件,不会被跟踪,但会在git-commit等是输出多余信息,也会使日志变得很乱。
.gitignore .* *.o *.o.* *.a *.s *.ko *.so *.so.dbg *.mod.c *.i *.lst *.symtypes *.order
Git的项目开发模式
Git作为一个正式项目发布系统,它能够极其有效的组织松散的开发人员,是一种非常规的开发组织形式,对工作流程没有任何强迫性的约束,比较灵活。
- 项目领导人
- 1.在自己本地机器上创建主版本库,并在此进行所有工作。
2.准备一个能让大家访问的公共版本库。
3.将你的主版本库推入公共版本库。
4.git-repack 公共版本库。这将建立一个包含初始化提交对象集的打包作为项目的起始线。
5.在你的主版本库中开展工作,包括自己的工作、收到的邮件补丁、“子系统负责人” 的公共库中导入的工作等等。
6.将项目的进度推入公共库中,并给大家公布一下。
7.尽管一段时间以后,"git-repack" 公共库。并回到第5步继续工作。
- 项目的子系统负责人
- 1.新建一个你自己的工作目录,通过 git-clone 克隆项目领导人的公共库。
2.准备一个可以给大家访问的公共库,就像项目领导人所做的那样。
3.复制项目领导人的公共库中的打包文件到你的公共库中。
4.将你的主版本库推入你的公共版本库,并运行 git-repack,如果你的公共库是通过的公共库是通过pull来导入的数据的话,再执行一下git-prune。
5.在你的主版本库中开展工作。这些工作包括自己的工作、收到的邮件补丁、“下一级子项目负责人”的公共库中导入的工作等等。
6.将你的变更推入公共库中,并且请“项目领导人”和“下级子系统负责人”导入这些变更。
7.每隔一段时间之后,git-repack 公共库。回到第 5 步继续工作。
- 一般开发人员
- 1.通过git-clone克隆“项目领导人”的公共库,作为自己的工作库。
2.在你的个人版本库中的 master 分支中开展工作。
3.每隔一段时间,向上游的版本库运行一下 git-fetch origin 。这样只会做 git-pull 一半的操作,即只克隆不合并。
4.用 git-cherry origin 命令,看一下你有什么补丁被接纳了。并用 git-rebase origin 命令将你以往的变更迁移到最新的上游版本库的状态中。
5.用git-format-patch origin生成email形式的补丁并发给上游的维护者。回到第二步接着工作。
免费git项目注册
网址:http://repo.or.cz
注册用户:http://repo.or.cz/m/reguser.cgi
注册项目:http://repo.or.cz/m/regproj.cgi
注册用户需要提供自己的公钥,可由上面提到的ssh-keygen生成。
0、使用git-init-db在本地创建版本库; 1、使用git-add添加要跟踪的文件; 2、修改,并使用git-commit提交修改到本地版本库; 3、使用git-push命令将本地版本库同步到服务器端; 4、其他用户可使用git-clone来克隆项目,并在本地开展自己的工作。
---------------------------------------------------------------------------------------------------------------------------------
1.
*origin(remote) 是Repository的版本
*master(branch) 是local端,正在修改的版本
所以平时没事不要用origin,如果用了,可通过 git reset -hard恢复到没修改的状态
2.git新增档案
>git add . #将资料先暂存到本地,add之后在新增资料,此次commit不会含在里面
>git add filename
>git add modify-file #修改过的档案也要add,不然commit要加上-a参数
>git add -u #只加修改过的档案,新增的档案不加入
>git add -i #进入互动模式
3.git 删除档案
>git rm filename
4.git 修改档案,搬移目录
>git mv filename new-filename
5.git status 查看当前档案状态
6.git commit
>git commit
>git commit -m ‘commit message’
>git commit -a -m ‘commit message’ #将所有修改过的档案都commit,但是新增的档案要先add .
>git commit -a -v #-v可以看到档案的哪些内容被改动了,-a把所有修改的档案都commit
7.产生新的branch
>git branch #列出目前所有的branch
>git branch new-branch #产生新的branch(new-branch),若没有特别指定,会有目前所在的branch/master直接复制一份
>git branch new-branch master #由master产生新的branch(new-branch)
>git branch new-branch v1 # 由 tag(v1) 产生新的 branch(new-branch)
>git branch -d new-branch # 刪除 new-branch
>git branch -D new-branch # 强制刪除 new-branch
>* git checkout -b new-branch test # 产生新的 branch, 并同时切换过去 new-branch
>git branch -r # 列出所有 Repository branch
>git branch -a # 列出所有 branch
8.git checkout 切换 branch
* git checkout branch-name # 切换到 branch-name
* git checkout master # 切换到 master
* git checkout -b new-branch master # 从 master 建立新的 new-branch, 并同时切换过去 new-branch
* git checkout -b newbranch # 由现在的分支为基础, 建立新的 branch
* git checkout -b newbranch origin # 由 origin 的基础, 建立新的 branch
* git checkout filename # 还原档案到 Repository 状态
* git checkout HEAD . # 将所以档案都 checkout 出來(最后一次 commit 的版本), 注意, 若有修改的当案都会被还原到上一版. (git checkout -f 亦可)
* git checkout xxxx . # 将所有当案都 checkout 出來(xxxx commit 的版本, xxxx 是 commit 的编号前四位), 注意, 若有修改的当案都会被还原到上一版.
* git checkout — * # 恢复到上一次 Commit 的状态(* 改成档案名, 就可以只恢复那个档案)
9.git diff #查看修改的内容
10.git merge 合并分支
其他常用命令:
git show [commit version] #显示某一次commit的记录
git blame [文件名] #显示该文件的修改历史
git log [commit version] #显示所有的commit历史记录
我的简单git使用方便自己查看:
git branch #查看当前在哪个分支下
git status #查看状态
git add . #快速添加全部修改,不必单个文件逐一添加
git commit -m "new order" #提交到本地
git checkout master
git pull #这时将master拉回了本地(下载服务4代码)
git checkout -b ordertest #在master建分支,此分支和master代码一样
git merge order #合并order
如果有冲突,在此解决冲突再次add commit merge
git push #提交到服务器
注意:git diff 不带路径参数将查看所有文件的修改
git add . 在文件很多时,可以一次将全部文件添加以待提交(commit), 但删除文件需要使用git rm app/../user.rb,路径参数不能省略
在push之前必须git pull命令, 否则可能覆盖别人的修改
还想继续在order下开发,则checkout order
merge ordertest
分享到:
相关推荐
### Git使用总结 #### 一、本地项目上传到GitHub步骤详解 **1. 创建本地版本库** - **步骤:** 在本地计算机上选择一个位置创建一个新的文件夹,并使用`git init`命令将其初始化为Git仓库。 - **命令示例:** `...
在本文中,我们将总结一些基本的Git使用步骤,帮助初学者快速上手。 首先,完成Git的安装后,你可以通过打开Git Bash来开始使用Git。Git Bash是一个模拟Unix/Linux环境的命令行工具,它允许你在Windows操作系统中...
在IT工作中,经常用到git,在此,对git的一些常用命令做了一下总结,对于git更丰富的用途没有过多涉及。
git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git...
git使用说明超级详细的总结分类,使用mindManager完成资源分类
本文档是关于Git使用的一个全面学习手册,涵盖了从基础到高级的众多知识点,旨在帮助读者系统学习和掌握Git操作。 ## Git概念与目的 Git是一个开源的分布式版本控制系统,由Linus Torvalds于2005年创建。它的目标...
### Git使用教程核心知识点 #### 一、Git简介与应用场景 **Git** 是一款开源的分布式版本控制系统,用于跟踪在软件开发过程中对文件所做的更改。它最初由Linus Torvalds于2005年创建,目的是为了更高效地管理Linux...
Git是目前世界上最先进的分布式版本控制系统。以上为git命令总结。
总结来说,Git 作为一款强大的版本控制系统,极大地促进了团队协作和代码管理。掌握 Git 的使用,不仅可以帮助开发者更好地追踪和管理代码变更,还能提升项目的透明度和可维护性。无论是个人项目还是大型企业级开发...
### Git使用手册精要 #### 一、Git简介与版本控制系统概念 **Git** 是一款全球范围内使用最为广泛且先进的分布式版本控制系统。它能够自动记录每次文件的改动情况,包括文件的添加、修改以及删除等操作。对于软件...
这是我对git使用的一个总结,对想要了解git如何使用,并致力于理清楚git相关知识点的朋友有所帮助
### Git使用入门知识点详解 #### 一、Git简介与应用场景 **Git** 是一款开源的分布式版本控制系统,用于跟踪在软件开发过程中对文件所做的更改。它最初由Linus Torvalds于2005年创建,目的是为了更高效地管理Linux...
在日常开发工作中,Git作为版本控制系统被广泛使用,它能帮助团队高效地管理代码版本,提高协同工作的效率。本文将根据给定的文件信息,详细总结并解释Git中的常见命令及其用途。 #### 1. Git与SVN的区别 - **Git**...
创建git仓库可以在远端创建一个仓库, 然后check到本地,在本地的文件里创建工程文件,然后提交 也可以将本地现有的工程和远端的空仓库关联 本地创建了一个工程 iOSDemo 运行没有错误,就可以提交到远端了。 一般...
总结的git使用大全,和中兴通信的git使用规范。
Git的使用总结与远程仓库GitHub
git 学习总结脑图记录git内部原理
### git操作命令总结 #### 一、配置与初始化 **标题和描述中提及的知识点:** - **配置用户信息:** 使用 `git config --global user.name "zoujun"` 和 `git config --global user.email "zoujun@youku.com"` 来...