Git使用流程

来源:互联网 发布:推荐c 语言在线编译 编辑:程序博客网 时间:2024/06/05 07:36

1. 准备工作

使用Git的第一步当然是安装了,如果你使用的是Debian 或者Ubuntu 可以直接使用命令 sudo apt-get install git 来安装;如果你使用的是CentOS 可以直接使用命令 yum install git 来安装;然或者你也可以直接源码安装,从git官网下载源代码,依次使用命令:./config    make    sudo make install 就可以完成安装了。

第一次使用Git时,你需要告诉你的协同开发者,你是谁,在你提交代码的时候,Git需要这两个信息。具体通过下面两个命令设置:

  • git config --global user.name "jiuyi"
  • git config --global user.email "xjiuyi@163.com"
Git 设置好了之后,如果你要从Git服务器上获取仓库,或者向Git服务器提交代码(比如: github), 你需要生成你的ssh密钥对。
Git 支持四种与服务器端通信的协议:git、http、ssh和 https。其中git只是一个只读协议,就是说你仅仅可以使用它从服务器端获取仓库,但是不能提交你的代码。而http和https用的很少,大部分都只支持ssh协议和git 协议。
当你使用 ssh 协议与服务器通信时,你可以通过以下ssh-keygen命令生成ssh密钥对:
  • ssh-keygen -t rsa -C xjiuyi@163.com    注: -t :指定签名类型; -C :指定注释
可以一路回车,使用默认值,没有特殊需求,无需设置密钥的访问密码。如果没有指定密钥名和存放路径的话,它默认把两个不对称密钥放在你的家目录的.ssh目录下,密钥文件默认名称是id_rsa和id_rsa.pub,前者是私钥,后者是公钥。然后你可以把你的公钥发给Git仓库管理员,你就可以通过ssh协议访问服务器端了,期间程序会自动进行密钥对匹配,如果你设置了访问密码,你可能需要使用输入密码。
准备工作已经就绪,可以开始神奇的Git之旅了~~ 

2.初始化仓库

初始化仓库有两种方式。
一种是直接在空目录里建立一个项目:
  • git init 
这个时候Git会在该目录下边生成一个.git的隐藏目录,Git用这个目录进行版本控制和内容跟踪的所有文件都在这个文件件里边,所以没事千万不要随便改里边的文件。
另外一种是从远程服务器克隆一个仓库:
  • git clone https://github.com/xjiuyi/Spoon-Knife.git     (https协议)  
  • git clone git@github.com:xjiuyi/Spoon-Knife.git   [test]      (ssh协议)  注:克隆远程仓库时,可以指定目录
初始化已完成,之后,就可以真正体验Git了~

3.添加文件

Git不会实时的跟踪你的文件,所以你需要手动添加你的文件到暂存区:
git add file1 file2    添加文件到暂存区
  • git add -A 把当前目录下的所有文件添加到暂存区
4. 添加版本
  • git commit -m "add files"    提交一个版本
  • git commit -a -m "add files" 提交一个版本
注意-a参数的使用,git add 命令只会把指定文件的当前状态添加到暂存区,如果这个文件add后又进行了修改,在你commit的时候,只会commit这个文件add是的状态,不会把之后的修改也commit进版本库,除非再次添加。-a 参数是自动把修改的文件或者删除的文件添加进暂存区(注:-a并不能处理新添加的文件,因为新文件没有被git跟踪)。
如果操作流程是这样的: 第一次修改 -> git add -> 第二次修改 -> git commit  ,git 新版本里不会包含第二次修改


 5. 查看版本库状态
  • git status
你可以使用这个命令随时查看版本库文件的状态,处于git跟踪的文件只有三种状态:
  1. Modified (wording directory) : 工作区被修改的文件,还没有添加到暂存区
  2. Staged (staging area) :通过git add 添加到暂存区的文件,待提交。
  3. Committed (git directory) : 已经通过git commit 添加到仓库的文件
6. 推送变更

你commit完成之后,如果要与其他人协作,就需要把你的代码提交到github或者其他git服务器上,这个时候就需要和远程服务器打交道了。
这是有两种情况,一种是你在本地建立的仓库,默认是没有任何远程服务器地址的,另一种是从其他Git服务区克隆过来的,这个服务器的地址会自动添加到你的仓库中,你可以这样查看:
  • git remote -v   查看远程服务器版本
如果你的仓库还没有关联远程库,你需要添加一个:
  • git remote add origin git@github.com:xjiuyi/learngit.git   添加一个远程仓库,  远程仓库名字origin是Git的默认叫法
  • git push origin master   把本地master分支推送到远程git服务器
  • git pull origin master 从远程Git服务器上拉取代码,并合并到本地master分支   (fetch 不自动合并)
7. 分支管理

Git具有强大的分支管理能力,Git创建一个新分支实际上是创建了一个指针,分支切换实际上是当前HEAD指针的移动,所以Git的分支创建和切换都是很快的。当你写项目时,可能要做一些小实验,但是不想影响现在的项目,这是可以新创建一个分支,如果效果不太理想可以删除,如果对新特性很满意,就合并到你自己得主分支里,然后删除新分支。
  • git branch -a 查看所有分支
  • git branch dev    创建一个新分支dev
  • git checkout dev    切换到新分支dev
  • git branch -d dev    删除分支dev
  • git branch -D dev    强制删除分支dev (dev分支上有未合并的内容)
  • git merge dev 将dev分支合并到当前分支
git merge 实际上是把两个版本合并到 一起,然后在当前分支创建一个commit,如果出现了冲突,必须人肉修改,修改完成后 执行git add 和 git commit,就OK了,可以使用git status 命令查看冲突文件。

7. 撤销修改

但你执行了命令后,发现自己错了,这时候就需要用到git 版本回退的功能:

如果你提交时忘了添加某些文件,你可以这样做:
  • git commit -m "add something"
  • git add file1
  • git commit --amend
amend 会把当前暂存区作为上一次的commit, 如果你commit之后,马上amend,git这时候会直接跳到编辑commit备注里边,你可以直接修改上次commit的备注。

如果你想把一个文件恢复到上一个版本的状态,你可以这样:
  • git checkout -- filename 撤销文件修改 (丢弃工作区文件的修改,从暂存区恢复文件)
如果你要把文件从暂存区删除,修改回退到工作区,你可以这样:
  • git reset HEAD filename   把暂存区的内容回退到工作区
如果感觉当前版本很垃圾,想回滚到到之前的一个版本,可以这样:
  • git reset HEAD^ 回退到上一个版本 (HEAD指向当前版本,^指向当前版本的副版本)
  • git reflog  查看所有的提交日志, 以便找到回滚id
  • git reset  "192a671"  回滚到某一个版本 (“192a671”是commit_id)
git reset 有三个回滚选项,你可以根据需要选择使用,分别是:
  1. --hard 操作无法撤销,清除工作区和暂存区的内容
  2. --soft  工作区和暂存区的内容不做任何变更,仅仅改变HEAD指针的指向上一个提交
  3. --mixed  暂存区内容回滚到工作区,这个选项是默认值。 (git reset  "192a671"    与 git reset --mixed "192a671" 效果一样)
8.文件删除
Git 中删除也是一种修改,删除后需要commit:
  • git rm file1
  • git commit -m ”delete file1“
注意删除后只能恢复到上一次提交的版本,上一次提交之后的修改不能恢复。


常用命令

最后回顾下git的常用 命令:
  • git config   配置Git 
  • git init 初始化一个仓库
  • git add  添加git跟踪文件、将修改后的文件放入暂存区、解决冲突
  • git clone  从远程服务器克隆项目
  • git status 查看仓库状态
  • git commit 提交项目
  • git remote 管理远程仓库
  • git fetch 从远程仓库拉取数据,不合并
  • git pull 从远程仓库拉取数据,自动合并到当前分支
  • git push 向远程仓库推送数据
  • git merge 分支合并
  • git branch 分支操作
  • git checkout  切换
  • git rm  文件删除




0 0
原创粉丝点击