精华内容
下载资源
问答
  • git基本命令

    千次阅读 2018-09-10 09:30:47
    添加目录下所有文件git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支,没有被add的文件的修改不会被提交到仓库,也就是git跟踪的是修改...

    初始化仓库

    在想要初始化的的文件夹中运行

    git init
    

    即可,该命令会在仓库中生成.git文件夹

    添加文件:

    git add readme.txt
    

    添加目录下所有文件git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支,没有被add的文件的修改不会被提交到仓库,也就是git跟踪的是修改而非文件。

    git add .   //提交当前仓库所有文件到暂存区
    

    把文件提交到仓库

    git commit -m "注释"
    

    查看历史提交记录

    git log
    

    回退到上一个版本

    git reset --hard HEAD^
    

    或者根据版本id来

    git reset --hard id前几位
    
    git reflog  用来记录你的每一次命令
    

    工作区

    指的是包含.git的那个目录,也就是.git的上一层目录

    版本库

    工作区中的.git目录及该目录的的版本库

    Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

    查看文件状态(是否更改及是否提交)

    git status
    

    git diff 命令可以查看工作区和版本库里面最新版本的区别:

    git diff HEAD -- readme.txt
    

    git checkout – file可以丢弃工作区的修改:

    $ git checkout -- readme.txt
    

    命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commit或git add时的状态

    git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令

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

    删除文件

    可以直接用rm进行删除Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:

    现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

    另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

    $ git checkout -- test.txt
    

    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    关联远程仓库

    可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库

    $ git remote add origin git@github.com:用户名/远处仓库名
    

    查看远程仓库地址

    git remote -v

    就可以把本地库的内容推送到远程库上的master分支上(当前所在分支):

     git push -u origin master
    

    把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

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

    从现在起,只要本地作了提交,就可以通过命令:

    $ git push origin master
    

    用命令git clone克隆一个本地库

    $ git clone git@github.com:用户名/gitskills.git
    

    创建与合并分支

    master分支及主分支,HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

    我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:

    1.创建分支

    创建dev分支,然后切换到dev分支:

    $ git checkout -b dev
    Switched to a new branch 'dev
    

    git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

    $ git branch dev   //创建分支
    $ git checkout dev //切换分支
    Switched to branch 'dev'
    

    查看当前分支:

    $ git branch
    * dev
      master
    

    git branch命令会列出所有分支,当前分支前面会标一个*号。

    合并分支:

    $ git merge dev
    Updating d46f35e..b17d20e
    Fast-forward
     readme.txt | 1 +
     1 file changed, 1 insertion(+)
    

    git merge命令用于合并指定分支到当前分支。

    注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast-forward

    删除分支:

    $ git branch -d dev
    Deleted branch dev (was b17d20e).
    

    查看分支:git branch

    创建分支:git branch

    切换分支:git checkout

    创建+切换分支:git checkout -b

    合并某分支到当前分支:git merge

    删除分支:git branch -d

    分支管理策略

    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

    如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

    下面我们实战一下–no-ff方式的git merge:

    首先,仍然创建并切换dev分支:

    $ git checkout -b dev
    Switched to a new branch 'dev'
    

    切换回master:

    $ git checkout master
    Switched to branch 'master'
    

    合并dev分支,请注意–no-ff参数,表示禁用Fast forward:

    $ git merge --no-ff -m "merge with no-ff" dev
    Merge made by the 'recursive' strategy.
     readme.txt | 1 +
     1 file changed, 1 insertion(+)
    

    因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

    策略:

    首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

    那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

    你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

    Bug分支

    每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

    当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:

    并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?

    幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

    $ git stash
    Saved working directory and index state WIP on dev: f52c633 add merge
    

    首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

     git checkout master
    Switched to branch 'master'
    Your branch is ahead of 'origin/master' by 6 commits.
      (use "git push" to publish your local commits)
    
    $ git checkout -b issue-101
    Switched to a new branch 'issue-101'
    

    查看之前保存的工作现场:

    用git stash list命令看看:

    恢复一下,有两个办法:

    一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

    另一种方式是用git stash pop,恢复的同时把stash内容也删了:

    可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

    $ git stash apply stash@{0}
    

    Feature分支

    添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

    若Feature分支上的功能临时取消并且还没有合并到主分支,需要使用(加D来进行删除)

    $ git branch -D feature-vulcan //feature分支
    Deleted branch feature-vulcan (was 287773e).
    

    多人协作

    当从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

    要查看远程库的信息,用git remote:

    $ git remote
    origin
    

    或者,用git remote -v显示更详细的信息:

    $ git remote -v
    origin  git@github.com:michaelliao/learngit.git (fetch)
    origin  git@github.com:michaelliao/learngit.git (push)
    

    推送分支

    推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

    $ git push origin master //master为分支名
    

    如果要推送其他分支,比如dev,就改成:

    $ git push origin dev
    

    哪些分支需要推送,哪些不需要呢?

    • master分支是主分支,因此要时刻与远程同步;
    • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
    • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
    • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

    Rebase

    远程分支同步到本地

    git pull
    

    ebase操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。

    $ git rebase
    

    标签

    创建标签

    Git中打标签非常简单,首先,切换到需要打标签的分支上:

    $ git branch
    * dev
      master
    $ git checkout master
    Switched to branch master
    

    命令git tag 就可以打一个新标签:

    $ git tag v1.0
    

    命令git tag查看所有标签:

    $ git tag
    v1.0
    

    默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

    方法是找到历史提交的commit id,然后打上就可以了:

    $ git log --pretty=oneline --abbrev-commit
    12a631b (HEAD -> master, tag: v1.0, origin/master) merged bug fix 101
    4c805e2 fix bug 101
    e1e9c68 merge with no-ff
    f52c633 add merge
    cf810e4 conflict fixed
    5dc6824 & simple
    14096d0 AND simple
    b17d20e branch test
    d46f35e remove test.txt
    b84166e add test.txt
    519219b git tracks changes
    e43a48b understand how stage works
    1094adb append GPL
    e475afc add distributed
    eaadf4e wrote a readme file
    

    比方说要对add merge这次提交打标签,它对应的commit id是f52c633,敲入命令:

    $ git tag v0.9 f52c633
    

    再用命令git tag查看标签:

    $ git tag
    v0.9
    v1.0
    

    注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show 查看标签信息:

    $ git show v0.9
    commit f52c63349bc3c1593499807e5c8e972b82c8f286 (tag: v0.9)
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Fri May 18 21:56:54 2018 +0800
    
        add merge
    
    diff --git a/readme.txt b/readme.txt
    ...
    

    可以看到,v0.9确实打在add merge这次提交上。

    还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

    $ git tag -a v0.1 -m "version 0.1 released" 1094adb
    

    用命令git show 可以看到说明文字:

    $ git show v0.1
    tag v0.1
    Tagger: Michael Liao <askxuefeng@gmail.com>
    Date:   Fri May 18 22:48:43 2018 +0800
    
    version 0.1 released
    
    commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (tag: v0.1)
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Fri May 18 21:06:15 2018 +0800
    
        append GPL
    
    diff --git a/readme.txt b/readme.txt
    ...
    

    删除标签

    如果标签打错了,也可以删除:

    $ git tag -d v0.1
    Deleted tag 'v0.1' (was f15b0dd)
    

    如果要推送某个标签到远程,使用命令git push origin :

    $ git push origin v1.0
    Total 0 (delta 0), reused 0 (delta 0)
    To github.com:michaelliao/learngit.git
     * [new tag]         v1.0 -> v1.0
    

    一次性推送全部尚未推送到远程的本地标签:

    $ git push origin --tags
    Total 0 (delta 0), reused 0 (delta 0)
    To github.com:michaelliao/learngit.git
     * [new tag]         v0.9 -> v0.9
    

    如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

    $ git tag -d v0.9
    Deleted tag 'v0.9' (was f52c633)
    

    然后,从远程删除。删除命令也是push,但是格式如下:

    $ git push origin :refs/tags/v0.9
    To github.com:michaelliao/learngit.git
     - [deleted]         v0.9
    

    总结

    1. 先拉主干代码本地
    2. 在本地创建和远程分支一致的本地分支1.
    3. 切换本地分支(第一次切换要pull远程的代码,以后就不用了)
    4. 更新远程分支代码(此时本地分支与远程分支一致了)
    5. 再创建本地分支2,切换到本地分支2,修改代码,提交代码。
    6. 切换到分支1(和远程一致的分支),更新最新代码git pull origin 分支名称
    7. 再切换到分支2,合并分支1更新下来的其他人提交的代码 git rebase 分支1名称
    8. 再切换到分支1,把分支2的代码合并到分支1 git merge 分支2名称
    9. 提交分支1的代码到远程服务器

    注意:提交代码前要更新代码

    展开全文
  • Git基本命令

    万次阅读 2017-07-20 21:45:04
    打开Git Shell,进入本地工程 > pushd E:\Projects\Forest > git init > git add . > git commit -m “create project” > git remote add origin https://github.com/zhenghaishu/Forest.git > g

    一、安装下载git客户端

    https://git-scm.com/download/win


    二、创建github仓库

    (一)在github.com上创建新的仓库,仓库名自定,比如Forest

    (二)打开Git Shell,进入本地工程

    > pushd E:\Projects\Forest

    > git init

    > git add .

    > git commit -m “create project”

    > git remote add origin https://github.com/zhenghaishu/Forest.git

    > git push -u origin master

     

    三、更新后提交

    > git add .

    > git commit -m “add spring-mvc”

    > git push


    四、撤销本地未提交的更改

    > git reset --hard


    五、下载代码到本地

    假设github上有个仓库,地址是https://github.com/zhenghaishu/TopCoder

    要下载到本地的E盘根目录下

    > pushd E:\

    > git clone https://github.com/zhenghaishu/TopCoder




    展开全文
  • git 基本命令

    2013-12-19 17:11:07
    git init git add . git commit -m "my back up " $ git reset --hard   2.添加删除重命名 git add readme git rm test01 git rm -r usb/ git mv test1.c test2.c 3.撤销与重做 git log git reset --...

     

     

    1.保存状态

    git init

    git add .

    git commit -m "my back up "

    $ git reset --hard
    

     

    2.添加删除重命名

    git add readme

    git rm test01

    git rm -r usb/

    git mv test1.c test2.c

    3.撤销与重做

    git log

    git reset --hard 766f

    git checkout

    撤销

    git commit -a

    git revert

    4. 生成变更日志

    git log > changelog

     

     

    git clone

    git pull

     

    git diff

    git whatchanged

     

     

     

     

    展开全文
  • GIT基本命令

    千次阅读 2011-04-23 16:39:00
    克隆Git Project:   git clone git@192.168.0.1:test.git <br /> 如果是只读权限,需要:git clone git://192.168.0.1/test.git     二.查看所有分支信息:  git branch ...

    一.克隆Git Project: 

       git clone git@192.168.0.1:test.git

       如果是只读权限,需要:git clone git://192.168.0.1/test.git

     

     

    二.查看所有分支信息:

       git branch -a  提示:以remote/开头的都是远程分支.

     

     

    三.在本地建立新分支:

       git checkout -b branch1 origin/branch1

     

     

       基于远程分支建立一个命名为branch1的本地分支,并自动切换到新分支.

     

    四.提交修改:

       git add .  如果有新文件加入,需要申明。也可以具体制定要添加的文件,如git add hello.txt

       git commit -am "Terry add something"  提交修改到本地.

     

     

    五.从服务器下载(2种方式,二选其一):

    git fetch

       git pull  如果遇到’Merge conflict’提示,表示遇到了合并冲突,需要手动解决冲突:

                 $ git pull origin  // ‘Merge conflict’

                 $ vi conflict.txt  //手动合并

                 $ git commit -am merge done

                 $ git push origin master

      

       git merge origin/branch1

                fetch:下载服务器更新到本地,但不自动合并。可以先git checkout origin/ branch1,切换到远程分支看看远程代码修改情况,然后再决定是否merge提示:git pull = git fetch + git merge

     

    六.比较提交差异:

       git log  可以看到历史提交信息,包括commit code

       git diff commitCode1 commitCode2  比较差异举例:git diff 56e5a a13d9 提示,有第三方的图形化差异比较工具,需要配置

     

    七.删除android工程远程仓库分支:

      repo forall -c git push remote :heads/branchName

           $ repo init -u git://192.168.2.5/media/android/platform/manifest.git

           $ vi media/android/.repo/manifests/default.xml

             //确认有写权限.fetch="git@192.168.2.5:media/android/"

           $ repo sync

           $ repo forall -c git push korg :heads/testbr //korg后面有一个空格

       git push origin master  提交当前分支提交到git servermaster分支.

    展开全文
  • Git小白字典——Git基本命令大全

    千次阅读 2020-12-19 10:07:01
    Git小白字典——Git基本命令大全
  • git基本命令操作指南

    千次阅读 2019-07-22 11:27:21
    clone到本地 git clone 'address';address为需要clone的地址 clone成功后会生成一个文件夹,cd 到文件夹下,根据...git status命令可以查看文件状态(可不执行,只是用于查看文件状态) git add -A提交所有变化 ( -A ...
  • 前两篇文章已经学会了Git的基本命令与创建仓库的命令,点击链接查看上一篇文章:【Git、GitHub、GitLab】二 Git基本命令之建立Git仓库,本篇文章就来创建一个有模有样的仓库。该仓库中的代码是一个显示静态页面的小...
  • 4.Git基本命令操作

    千次阅读 2019-06-20 16:10:41
    1.git init 把一个目录变成Git可以管理的仓库 2.git add/commit 将文件提交至Git版本库 git add xxx.txt 完成对文件的跟踪(加入暂存区,为git commit做准备) ...eg:通过命令:echo 'Study...
  • git 基本命令 用法

    千次阅读 2018-07-26 14:45:42
    git log 查看提交记录 1. git log 查看提交历史记录 2. git log --oneline 或者 git log --pretty=oneline 以精简模式显示 3. git log --graph 以图形模式显示 4. git log --stat 显示文件更改列表 5. git ...
  • git 基本命令 简写设置

    千次阅读 2018-04-16 15:00:48
    在你当前项目里,打开终端, 查看是否含有.git这个文件夹,(前面带点的一般是隐藏文件)然后进入git文件夹下的config文件进行配置,(具体命令 vim .git/config)然后输入下面代码[alias] br = branch co = ...
  • git基本命令: git branch 查看所在分支 git checkout master 切换到主分支(其他分支类似) git checkout -b new-branch 新建分支 git status 查看状态 git add . 添加提交内容 git reset .ideal 可撤回误提交上的....
  • 上一篇文章学习了Git的安装与最小...用Git之前已经有项目代码,则使用以下两条命令建立Git仓库 $ cd 项目代码所在的文件夹 $ git init 用Git之前还没有项目代码,使用下面三条命令创建git仓库 $ cd 某个文件夹 ...
  • Git基本命令使用

    千次阅读 2016-08-29 11:23:26
    由于今年转向Framework开发了,进来发现公司内部使用的都是Git作为版本控制,来之前使用的也不多,进来后也使用了将近半年了,都会用了,但命令还是不太容易记住,所以在这里做一个记录,毕竟好记性不如烂笔头。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,459
精华内容 44,583
关键字:

git基本命令