Git安装及常用命令

Git版本控制全攻略

Git安装

Linux安装

Debian或Ubuntu,Git安装命令:

sudo apt-get install git

其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入以下命令:

./config

make

sudo make install

Mac有两种安装Git的方法

  1. 通过homebrew安装,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/
  2. 从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。(Xcode是Apple官方IDE,功能非常强大,是开发Mac和iOS App的必选装备,而且是免费的!)

Windows安装Git

  • 从Git官网直接下载安装程序(https://git-scm.com/downloads),(网速慢的同学请移步国内镜像),然后按默认选项安装即可。

  • 安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

  • 安装完成后,还需要最后一步设置机器的标识,在命令行输入:

  • $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
    

本地仓库

初始化本地仓库

  • 创建文件夹,并进入文件夹,执行git init命令把这个目录变成Git可以管理的仓库:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
  • 查看隐藏的.git目录

    ls -ah
    

    .git目录外是工作区,.git目录里分为暂存区和分支;图片、视频、Word文档这些二进制文件可以由版本控制系统管理,但没办法跟踪文件的变化,只能知道图片从100KB改成了120KB,但改了什么版本控制系统不知道。

  • 将文件添加到仓库(暂存区)

    git add readme.txt
    
  • 将文件提交到仓库(将暂存区的内容提交到分支)

    git commit -m "append GPL" 
    
  • 查看仓库当前的状态:

    git status
    
  • 查看文件差异

  • git diff readme.txt
    
  • 显示提交日志

    git log
    
  • 简化显示提交日志

    git log --pretty=oneline
    

版本回退

  • 回退到版本库的最新版本

    git reset --hard HEAD(版本号)
    
  • 回退到版本库的最新版本的上一版本或上100版本

    git reset --hard HEAD^/HEAD~100
    

    执行回退后在git log提交记录里再也看不到此版本后的记录了,如果git log的命令窗口没关掉可以找到里面的提交记录编号再执行reset --head命令来回到之后的版本(版本号输入前几位即可)

    git reset --hard 3628164
    
  • 查看执行命令的历史

    git reflog
    

管理修改

Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

  • 查看工作区和版本库里面最新版本的区别

    git diff HEAD -- readme.txt
    

撤销修改

  • 丢弃工作区的修改

    git checkout -- readme.txt
    
  • 将暂存区的修改撤销掉(unstage)

    git reset HEAD readme.txt
    

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

删除文件

直接在文件管理器中把没用的文件删了,或者用rm命令删了:rm test.txt,Git知道你删除了文件,工作区和版本库不一致,使用git status来查看当前状态

  • 确认删除或恢复文件:
  1. 确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

  2. 恢复文件因为版本库中还存在,所以可以把误删的文件恢复到最新版本:git checkout – test.txt

远程仓库

先有本地库,再有远程库

  • 本地仓库关联到远程仓库

    git remote add origin git@github.com:michaelliao/learngit.git
    
  • 本地仓库的内容推送到远程master分支

  • git push -u origin master
    

    第一次推送master分支时,加上了**-u参数**,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

  • 推送最新修改(origin远程 master分支名称)

  • git push origin master / git push
    

先有远程库,再有本地库

  • 克隆远程库到本地

  • git clone git@github.com:michaelliao/gitskills.git 
    

分支管理

  1. 主分支:即master(指针)分支
  2. HEAD指向的是当前分支
  3. 每次向master提交,master分支都会向前移动一步;
  4. Git新建分支(指针)dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。
  5. Git创建一个分支很快,除了增加一个dev指针,改变HEAD的指向,工作区的文件都没有任何变化!
  6. Git合并分支也很快,只是改变指针,工作区内容也不变。
  • 创建分支

  • git branch dev
    
  • 创建并切换到dev分支

  • git checkout -b dev 
    
  • 切换分支

  • git checkout dev
    
  • 查看当前所在分支

  • git branch 
    
  • 合并指定分支到当前分支

  • git merge dev
    
  • 删除dev分支

  • git branch -d dev
    
  • 强行删除分支

  • git branch -D <name>
    
  • 从远程克隆git仓库

  • git clone git@github.com:michaelliao/learngit.git
    

克隆后只能看到本地的master分支

  • 创建远程origin的dev分支到本地dev分支

  • git checkout -b dev origin/dev
    
  • 远程分支关联

    使用git在本地新建一个分支后,需要做远程分支关联。如果没有关联,git会在执行git pull, git push操作时提示你需要添加关联。

    git branch --set-upstream branch-name origin/branch-name
    

解决冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

  • 查看分支合并图

  • git log --graph
    
  • 查看分支历史

  • git log --graph --pretty=oneline --abbrev-commit
    

分支管理策略

合并分支时通常会用Fast forward(git merge dev)模式,但这种模式下,删除分支后会丢掉分支信息。

合并时禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。fast forward合并就看不出来曾经做过合并。

git merge --no-ff -m “merge with no-ff” dev --no-ff参数表示禁用Fast forward,因为合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

Bug分支

  • 储藏工作区的现场

  • git stash
    
  • 恢复工作现场的同时把stash内容也删掉

  • git stash pop
    
  • 查看工作现场储藏未恢复的记录

  • git stash list
    
  • 恢复一个储藏工作现场

  • git stash apply stash@{0}
    
  • 删除list里的储藏内容记录

  • git stash drop
    

这时可以在当前分支或切换到任何其它分支上,创建新的分支进行bug修改,修改完成后提交代码;再回到原分支执行git stash pop恢复工作区的现场。

多人协作

  • 查看远程库的信息

  • git remote
    
  • 查看远程库详细信息

  • git remote -v
    
  • 查看远程分支

  • git branch -a
    

    master分支是主分支,因此要时刻与远程同步;

    dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

    bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

多人协作的工作模式通常是这样:

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

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

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

    如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

git config --global --list

git config --local --list

git config --system --list

修改默认推送方式

git config --global push.default ‘upstream’

upstream推送方式下设置当前分支和远程分支关联,可以直接使用git push方法

git push -u origin HEAD:feature/develop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值