码迷,mamicode.com
首页 > 其他好文 > 详细

Git使用(上)

时间:2017-11-18 18:53:51      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:基本命令   ssh   tor   git push   merge   定义   版本控制   form   cpp   

一、Git配置

使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名,每次提交记录里都会包含这些信息。使用git config命令进行配置:

git config --global user.name

git config --global user.email

 

二、获取一个Git仓库 

为了得到一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL). Git能在许多协议下使用,所以Git URL可能以ssh://, http(s)://, git://. 有些仓库可以通过不只一种协议来访问。

git clone url

 

三、初始化一个新的仓库

可以对一个已存在的文件夹用下面的命令让它置于Git的版本控制管理之下。

git init

 

四、正常的工作流程

git的基本流程如下:

  • 创建或修改文件使用git add命令添加新创建或修改的文件到本地的缓存区(Index);
  • 使用git commit命令提交到本地代码库(可选,有的时候并没有可以同步的远端代码库);
  • 使用git push命令将本地代码库同步到远端代码库;
  • 使用git status命令查看当前git仓库的状态。
  • 使用 git diff 命令再加上 --cached 参数,看看缓存区中哪些文件被修改了。进入到git diff --cached界面后需要输入q才可以退出。没有--cached参数,git diff 会显示当前你所有已做的但没有加入到索引里的修改。
  • git remote add 命令用于添加远程主机,origin 是主机名,此处可以自定义,不一定非要使用 origin,替换为自己的远程仓库地址
  • 这个时候如果本地的仓库连接到了远程Git服务器,可以使用下面的命令将本地仓库同步到远端服务器git push origin master

五、分支与合并

1.分支

  • 一个Git仓库可以维护很多开发分支 git branch “分支名“ 创建新分支;
  • 运行git branch命令可以查看当前的分支列表,以及目前的开发环境处在哪个分支上;
  • master分支是Git系统默认创建的主分支。星号标识了你当工作在哪个分支下,输入git checkout 分支名可以切换到其他分支;
  • 切换完成后,先编辑里面的一个文件,再提交(commit)改动,最后切换回 “master”分支:
# 修改文件file1
$ echo "update" >> file1
# 查看当前状态
$ git status
# 添加并提交file1的修改
$ git add file1
$ git commit -m "update file1"
# 查看file1的内容
$ cat file1
test
update
# 切换到master分支
$ git checkout master

  • git merge命令来合并experimental到主线分支master:
# 切换到master分支
$ git checkout master
# 将experimental分支合并到master
$ git merge  -m ‘merge experimental branch‘ experimental

  • 由于两个branch修改了两个不同的文件,所以合并时不会有冲突,执行上面的命令后合并就完成了。
  • 如果有冲突,比如两个分支都改了一个文件file3,则合并时会失败。首先我们在master分支上修改file3文件并提交:
# 切换到master分支
$ git checkout master
# 修改file3文件
$ echo "master: update file3" >> file3
# 提交到master分支
$ git commit -a -m ‘update file3 on master‘
  • 然后切换到experimental,修改file3并提交:
# 切换到experimental分支
$ git checkout experimental
# 修改file3文件
$ echo "experimental: update file3" >> file3
# 提交到experimental分支
$ git commit -a -m ‘update file3 on experimental‘
  • 切换到master进行合并:
$ git checkout master
$ git merge experimental
Auto-merging file3
CONFLICT (content): Merge conflict in file3
Automatic merge failed; fix conflicts and then commit the result.
  • 合并失败后先用git status查看状态,会发现file3显示为both modified,查看file3内容会发现:
$ cat file3
test
<<<<<<< HEAD
master: update file3
=======
experimental: update file3
>>>>>>> experimental
  • 上面的内容也可以使用git diff查看,先前已经提到git diff不加参数可以显示未提交到缓存区中的修改内容。
  • 可以看到冲突的内容都被添加到了file3中,我们使用vim编辑这个文件,去掉git自动产生标志冲突的<<<<<<等符号后,根据需要只保留我们需要的内容后保存,然后使用git add file3git commit命令来提交合并后的file3内容,这个过程是手动解决冲突的流程。
# 编辑冲突文件
$ vim file3
# 提交修改后的文件
$ git add file3
$ git commit -m ‘merge file3‘
  • 当我们完成合并后,不再需要experimental时,可以使用下面的命令删除:
$ git branch -d experimental

git branch -d只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D

  • 如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
$ git reset --hard HEAD^
# 查看file3的内容,已经恢复到合并前的master上的文件内容
$ cat file3

六、Git日志

1.查看日志

git log命令可以显示所有的提交(commit):

$ git log

如果提交的历史纪录很长,回车会逐步显示,输入q可以退出。

git log有很多选项,可以使用git help log查看,例如下面的命令就是找出所有从"v2.5“开始在fs目录下的所有Makefile的修改:

$ git log v2.5.. Makefile fs/

Git会根据git log命令的参数,按时间顺序显示相关的提交(commit)。

2.日志统计

如果用--stat选项使用‘git log‘,它会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内容,这个命令相当于打印详细的提交记录:

$ git log --stat

3.格式化日志

你可以按你的要求来格式化日志输出。--pretty 参数可以使用若干表现格式,如oneline:

$ git log --pretty=oneline

或者你也可以使用 short 格式:

$ git log --pretty=short

你也可用medium,full,fuller,email 或raw。 如果这些格式不完全符合你的需求, 你也可以用--pretty=format参数定义格式。

--graph 选项可以可视化你的提交图(commit graph),会用ASCII字符来画出一个很漂亮的提交历史(commit history)线:

$ git log --graph --pretty=oneline

4.日志排序

日志记录可以按不同的顺序来显示。如果你要指定一个特定的顺序,可以为git log命令添加顺序参数。

按默认情况,提交会按逆时间顺序显示,可以指定--topo-order参数,让提交按拓扑顺序来显示(就是子提交在它们的父提交前显示):

$ git log --pretty=format:‘%h : %s‘ --topo-order --graph

七、小结

几个基本命令:

  • git config:配置相关信息
  • git clone:复制仓库
  • git init:初始化仓库
  • git add:添加更新内容到索引中
  • git diff:比较内容
  • git status:获取当前项目状况
  • git commit:提交
  • git branch:分支相关
  • git checkout:切换分支
  • git merge:合并分支
  • git reset:恢复版本
  • git log:查看日志
 



 

 

 

 

 

 
 

Git使用(上)

标签:基本命令   ssh   tor   git push   merge   定义   版本控制   form   cpp   

原文地址:http://www.cnblogs.com/ywx772/p/7857347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!