Git 常用方法

2017/1/23 posted in  工具使用  

下面总结一下自己在学习Git时用到的一些语法
更多详细内容请浏览:Git教程 - 廖雪峰的官方网站

一 . 修改文件

git init:创建git
git add readme.txt :将readme.txt变化提交到库
git status :获取修改的状态
git diff readme.txt:获取我们与库中哪里不同
git commit :将修改提交到库中

二 . 回溯版本

git log:显示从最近到最远的提交日志
git log --pretty=oneline :简化日志
git reset --hard HEAD^ :HEAD代表当前版本,一个代表上一版
git reflog:获取记录的commit id
git reset --hard (commit id) :回溯到指定id的版本

三 . 撤销修改

git checkout -- file :撤销回到最近一次git commit或git add时的状态
git reset HEAD file : 把暂存区的修改撤销掉

四 . 删除文件

rm test.txt :删除test.txt
git rm test.txt:将删除操作提交到暂存区,commit之后版本里的删除
git checkout -- test.txt :用版本库里的版本替换工作区的版本

五 . 远程库

git remote add origin git@github.com:username/name.git :添加远程库
git push -u origin master :第一次将本地库传送到远程库
git push origin master :将本地库传送到远程库 #### 2.从远程库克隆
git clone git@github.com:username/name.git :克隆一个本地库

六 . 分支管理

1. 创建与合并分支

git checkout -b dev :git checkout 命令加上-b参数表示创建分支并切换
git branch : 查看当前分支,列出所有分支
git checkout master :切换回主分支
git merge dev :合并指定分支dev到当前分支
git branch -d dev :删除分支dev

2. 解决冲突

git log :看到分支的合并情况
git merge --no-ff -m "merge with no-ff" dev :加上--no-ff参数就可以用普通模式合并,合并后的历史有分支

3. Bug分支

git stash :把当前工作现场“储藏”起来,以后恢复现场后继续工作
git stash list :查看stash
git stash apply :恢复工作,但是恢复后,stash内容并不删除
git stash drop :删除stash
git stash pop :恢复的同时把stash内容也删了

4. Feature分支

(1). 多人协作

先用git pull把最新的提交从origin/dev抓下来,遇到错误的话
git branch --set-upstream dev origin/dev :指定本地dev分支与远程origin/dev分支的链接,再pull
合并冲突,需要手动解决
解决后,提交,再push : git push origin dev。
git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:

1. 找一个干净目录,假设是git_work
2. cd git_work
3. git clone http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录
4. cd project
5. git branch -a,列出所有分支名称如下: remotes/origin/dev remotes/origin/release
6. git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
7. git checkout -b release origin/release,作用参见上一步解释
8. git checkout dev,切换回dev分支,并开始开发。

(2). 多人协作的工作模式通常是这样:

  首先,可以试图用git push origin branch-name推送自己的修改;

  如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  如果合并有冲突,则解决冲突,并在本地提交;没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

  这就是多人协作的工作模式,一旦熟悉了,就非常简单。

七. Github 的使用

  如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap
点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:

git clone git@github.com:michaelliao/bootstrap.git
  一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。
  如果你想修复bootstrap的一个bug,或者新增一个功能,立刻就可以开始干活,干完后,往自己的仓库推送。
  如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。