(转载)Git使用教程

简介: 转载自:http://www.418log.org/post-89.html .什么是Git      简单地说,Git是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被认为是分布式版本控制工具中的顶级水准。
+关注继续查看

转载自:http://www.418log.org/post-89.html

.什么是Git

     简单地说,Git是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被认为是分布式版本控制工具中的顶级水准。智能、友好、强健、高效。 正如所提供的文档中说的一样,“Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。”发音:[英][ɡit] [美][ɡɪt]

     Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如,X.org 最近就迁移到 Git 上来了,很多 Freedesktop.org 的项目也迁移到了 Git 上。

2.Git的优势

     Git 目前主要由寻找 CVS 或专有代码管理解决方案替代物的软件开发人员所使用。Git 与 CVS 有很多区别:

     分支更快、更容易。

     支持离线工作;本地提交可以稍后提交到服务器上。

     Git 提交都是原子的,且是整个项目范围的,而不像 CVS 中一样是对每个文件的。

     Git 中的每个工作树都包含一个具有完整项目历史的仓库。

     没有哪一个 Git 仓库会天生比其他仓库更重要。

3.Git版本控制

     简单地说,就是将在本地开发的代码,定时推送到服务器。每一次修改,记录下它的作者、时间及修改说明等。

     相对的,我们也可以从服务器下拉其他人推送的代码,并了解它的作者、时间、修改说明及其具体的修改内容。

     这样,版本控制给团队协作开发提供了极大的方便。即使是一个人开发,因为它记录下了我们整个的开发历史,也是极有帮助和价值的。

     比如,如果某次修改甚至整个系统出现问题,它也能帮助找回我们珍贵的代码。

4.Git分布式版本控制

     更进一步,分布式版本控制工具使得我们在本机上即拥有完整的功能,不依赖于服务器,使用更为方便。它们往往也提供其它更好用或更强大的功能,比如灵活的分支管理。

5.Git 工作流程

     1)使用中央服务器辅助协作

     2) 每人在服务器拥有一个以自己 id 为名称的分支;

     3) 各人只许推送更新到自己的分支,不允许推送到别人的分支或者 master;

     4) master 由专人管理,在合适时 merge 其它分支(开发初期每日自动 merge 各人分支,生产化后则由人工 merge 经过 review 的分支);

     5) 代码修改 merge 到 master 后,将同步到所有终端。

 

首先下载git客户端程序,我下载的是Git-1.8.3-preview20130601.exe,安装后,执行Git Bash,这时你需要设置根据提示设置email和name,然后就可以创建自己的代码库了。


1、当前项目未执行初始化请执行下面操作

在本地创建新的Git仓库(连接别人的代码和创建自己的代码库)

mkdir andbase

cd andbase

git init

touch README.md

git add README.md

git commit -m 'hello world'

      git remote add origin git@github.com:zhaoqp2010/andbase.git

将主分支修改推送到服务器

git push -u origin master

下载主分支数据

git pull -u origin master

连接本地已有的 Git 仓库

git remote add origin git@github.com:zhaoqp2010/andbase.git

git push -u origin master

2、提交代码

进入存放你所要提交代码的文件夹下

git add .

git commit -m 'hello world'

git push -u origin yourbranch

3、下载分支代码

git pull  -u   origin yourbranch

4、查看Git仓库中的文件状态

git status

5、向服务器的Git仓库中提交本地Git仓库已修改的文件或目录

git push -u   origin yourbranch

6、下载服务器端Git仓库中的文件或目录到本地当前目录。

git clone git@github.com:zhaoqp2010/andbase.git

7、查看所有分支

git branch -a  

8、建立newbranch分支

git checkout -b newbranch

9、切换到master分支

git checkout yourbranch

10、提交所有修改

git commit -a

11、合并分支

将 coreteam/master 合并到本地的 newbranch 分支

先 git checkout newbranch 切换到newbranch分支

再 git merge coreteam/master

12、将主分支修改推送到服务器

git push origin master  

13、将newbranch分支修改推送到服务器

git push origin newbranch

 

 

 

以下内容转自http://my.oschina.net/u/559701/blog/70010

git操作的常用命令,不是很全面,但是常用,个人开发笔记。

 

 

 

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

 

---------------------------------------分支操作-----------------------------------------------

 

1.察看项目的分支情况

 

1 #进入项目目录
2 cd REPOSITORIES/
3 git branch
4 # 注意前面的*号表示当前处于那个分支<span style="font-family:mceinline;">查看远程分支: <strong>git</strong> branch -r</span>

 

2.创建新的分支

 

1 git branch newbranch
2  
3 #创建并进入新的分支
4 git checkout -b newbranch

 

3.切换到分支

 

分支切换的时候要注意一个问题:在切换过程中,上一个分支的修改会带到新的分支去。也就是说在分支切换的时候会带上修改。如果要避免这样情况,当然就是在切换之前把修改提交(commit)了。

 

1 git checkout newbranch
2 #取消对file的修改
3 git checkout file

 

4.察看文件修改情况

 

1 git status

 

            显示如下的代码:

 

1 # On branch new
2 # Changes not staged for commit:
3 #   (use "git add/rm <file>..." to update what will be committed)
4 #   (use "git checkout -- <file>..." to discard changes in working directory)
5 #
6 #   deleted:    build.xml
7 #
8 no changes added to commit (use "git add" and/or "git commit -a")

 

可以看到,他说删除了build.xml文件。现在是处于new分支

 

5.提交修改

 

1 #这样是提交到当前分支去的
2 git commit -am "commit message"

 

6.删除分支

 

1 git -d branch

 

 

 

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

 

----------------------------------------------------合并操作--------------------------------------

 

1 git merge  --type  branch
2 #其中的type可以是下面4种

 

  • Straight merge 預設的合併模式,會有全部的被合併的 branch commits 記錄加上一個 merge-commit,看線圖會有兩條 Parents 線,並保留所有 commit log。
  • Squash commit 壓縮成只有一個 merge-commit,不會有被合併的 log。SVN 的 merge 即是如此。
  • cherry-pick 只合併指定的 commit
  • rebase 變更 branch 的分支點:找到要合併的兩個 branch 的共同的祖先,然後先只用要被 merge 的 branch 來 commit 一遍,然後再用目前 branch 再 commit 上去。這方式僅適合還沒分享給別人的 local branch,因為等於砍掉重練 commit log。

 

 合并当然要伴随这各种各样的问题拉,其中最重要的一个问题就是冲突的问题拉。冲突过后,会提示

 

1 Automatic merge failed; fix conflicts and then commit the result.

 

冲突的文件会更改为下面的样子,剩下的时间就得看自己去手动解决这里的冲突了。

 

1 <<<<<<< HEAD
2 #这里是现在的代码
3 -------------------------
4 =======
5 #这里是拉过来冲突的代码
6 ++++++++++++++++++++++++
7 >>>>>>> master

 

 

 

-------------------------------提交-------------------------------------------

 

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

 

git在提交的时候,有时候可能想当前的所有修改,使用命令

 

1 #该命令放弃当前 git status 显示的所有的修改
2 git reset
3  
4 #可以让版本回退到commit编号去
5 git reset --hard [commit编号]

 

如果只放弃某一个文件的修改,可以使用checkout命令

 

1 git checkout file
2 #但是对于增加的文件,使用这个命令来放弃修改会有问题,它会提示说找不到文件,因为修改之前是没有该文件的。

 

git在提交的时候,会忽略一些类型的文件,这写配置在 项目的.gitignore 文件中,可以使用vi编辑这写内容

 

1 vi .gitignore

 

 

 

-----------------------------------------远程操作--------------------------------------

 

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

 

1 检出仓库:$ git clone git://github.com/jquery/jquery.git
2 查看远程仓库:$ git remote -v
3 添加远程仓库:$ git remote add [name] [url]
4 删除远程仓库:$ git remote rm [name]
5 修改远程仓库:$ git remote set-url --push[name][newUrl]
6 拉取远程仓库:$ git pull [remoteName] [localBranchName]
7 推送远程仓库:$ git push [remoteName] [localBranchName]

 

 

 

 

 

-----------------------------------比较操作---------------------------------------

 

在使用Git的过程中,我们有时候需要去对比代码的不同的地方。这时可以使用 diff 这的命令

 

1 # 对比commit_id1和commit_id2的不同地方,并用不同颜色区别出来, 注意 commit_id1 一定要比 commit_id2要早提交
2 git diff --color commit_id1 commit_id2

 

000

 

 

 

--------------保存当前修改状态-------------------------

 

有时候有这样的情况,当前编辑了一些文件,这时需要做reset、checkout等其他操作,这时又不想把编辑丢弃,提交了也不完整。这时需要git一个非常人性化的一个命令:git stash ,来保存当前的状态。

 

1 #保存当前编辑
2 git stash
3 #恢复编辑
4 git stash apply

 


 

git pull 远程分支

 

1 #checkout的同时在本地同步一个远程origin上的serverbranch分支

 

2 git checkout --track origin/serverbranch

 

相关文章
|
6月前
|
存储 开发工具 Android开发
git repo工具详细使用教程
git repo工具详细使用教程
|
6月前
|
程序员 网络安全 开发工具
Git图文使用教程详解(三)(下)
Git图文使用教程详解(三)
70 0
|
6月前
|
IDE 开发工具 Android开发
Git图文使用教程详解(三)(上)
Git图文使用教程详解(三)
60 1
|
6月前
|
Shell 开发工具 git
Git图文使用教程详解(二)(下)
Git图文使用教程详解(二)
73 0
|
6月前
|
程序员 开发工具 git
Git图文使用教程详解(二)(上)
Git图文使用教程详解(二)
59 0
|
6月前
|
Shell 开发工具 git
Git图文使用教程详解(二)
Git图文使用教程详解
61 0
|
6月前
|
安全 Shell 程序员
Git图文使用教程详解(一)
Git图文使用教程详解(一)
106 0
|
10月前
|
开发工具 git 索引
Git学习笔记-详细使用教程
Git学习笔记-详细使用教程
Git学习笔记-详细使用教程
|
11月前
|
存储 Linux Shell
手把手教你用Git——Git使用教程(一)
Git 是一个开源的分布式版本控制系统,可以有效、快速的进行项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
362 0
手把手教你用Git——Git使用教程(一)
|
12月前
|
Linux Shell 开发工具
Git使用教程之本地仓库的基本操作
一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统。 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样我们可以选择在合适的时间将本地版本推送到统一的版本管理服务器 ②Git每次会提取整个代码仓库的完整镜像,相当于对整个代码仓库都进行了一次备份,这样计时版本服务器除了问题,我们可以直接采用本地仓库恢复!结合本地版本管理功能,远程版本管理服务器出问题了,我们依然能继续写自己的代码,当他恢复的时候我们再提交我们的本地版本! Git研发初期是为了更好的管理Linux内核,不过现在已经广泛应用于各种项目中!
168 0
相关产品
云迁移中心
相关实验场景
更多
推荐文章
更多