Git for windows

Git for windows                 

感谢:http://blog.jobbole.com/78960/

1、初步尝试

安装完成后 设置 用户名和邮箱作为一个标识
    git config --global user.name "xxx"
    git config --global user.email "xxx"

创建版本库
    在一个目录下,例如新建一个testgit版本库 mkdir testgit
    cd 命令切换路径   cd testgit
    然后 git init 命令把这个目录变为可以管理的仓库,此时会在该目录下面生成 .git 文件夹


把一个文件例如 a.txt 放到该目录仓库下,
    git add a.txt
    git commit -m '第一次提交'
    git status 查看文件提交状态,是否还有未提交的

    尝试把 a.txt 更改后再次提交,
    git diff a.txt 可以显示两次文件的差异,更改了哪些地方

2、版本回退

    git log 显示 提交历史日志
    git log --pretty=oneline 同上,显示会更加美观

    git reset -hard HEAD^
    git reset -hard HEAD^^

    git reflog              获取每次提交的版本号
    git reset -hard 版本号  回退到对应的版本

    暂存区 工作区[其中的.git文件夹属于 版本库]

    git checkout -- a.txt(file) 丢弃对工作区的修改

    git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。


    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

    git rm a.txt 删除文件

3、远程仓库

    在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置:

    第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:

    ssh-keygen -t rsa –C “xxxxxxx@163.com”,
    id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。


    git init
    git add README.md
    git commit -m "first commit"
    git remote add origin https://github.com/xxxxx/testgit.git
    git push -u origin master

    由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了,

    从现在起,只要本地作了提交,就可以通过如下命令:
    git push origin master
    把本地master分支的最新修改推送到github上了,现在你就拥有了真正的分布式版本库了。


    上面我们了解了先有本地库,后有远程库时候,如何关联远程库。现在我们想,假如远程库有新的内容了,我想克隆到本地来 如何克隆呢?
    git clone https://github.com/xxxxx/testgit2  即可


4、创建与合并分支

    在 版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

    首先,我们来创建dev分支,然后切换到dev分支上。如下操作:
    git checkout -b dev
    git checkout master 切换到master分支

        上面的命令
        git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令
        git branch dev 创建dev分支 
        git checkout dev 切换到dev分支

    git branch 查看分支,会列出所有的分支,当前分支前面会显示一个*符号

    git merge dev 把指定的dev分支合并到当前分支master

    git branch -d dev 删除dev分支


    创建与合并分支命令总结如下:

        查看本地分支:git branch         ,查看本地和远程分支   git branch -a
        创建分支:git branch name
        切换分支:git checkout name
        创建+切换分支:git checkout –b name
        合并某分支到当前分支:git merge name
        删除本地分支:git branch –d name
        删除远程分支:git push origin --delete name

5、如何解决冲突

    通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。首先我们来做demo演示下:

        创建一个dev分支。
        修改readme.txt内容。
        添加到暂存区。
        切换回主分支(master)。
        合并dev分支,使用命令 git merge –no-ff -m “注释” dev
        查看历史记录

    分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。


    git stash 把当前的工作现场隐藏起来
        工作区是干净的,那么我们工作现场去哪里呢?我们可以使用命令 git stash list来查看下。如下:
    
    工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:
    git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
    另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。


6:多人协作。

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

要查看远程库的信息 使用         git remote
要查看远程库的详细信息 使用  git remote –v

推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
使用命令 git push origin master


因此:多人协作工作模式一般是这样的

首先,可以试图用  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
这就是多人协作的工作模式,一旦熟悉了,就非常简单。


过程中如果碰到例如 git pull 一直没反应的情况,可以先断开本地与远程的链接,然后重新关联上即可,如下,
1、移除旧的origin :            git remote remove origin
2、再重新建立新的origin : git remote add origin http://github.com/×××
重新pull就可以了,如果不行,是因为本地仓库没有关联远程的某个仓库,执行上面说的命令  git branch --set-upstream branch-name origin/branch-name  即可

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

7、Git基本常用命令汇总参考如下:

mkdir: XX (创建一个空目录 XX指目录名)

pwd: 显示当前目录的路径。

git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。

git add XX 把xx文件添加到暂存区去。

git commit –m “XX” 提交文件 –m 后面的是注释。

git status 查看仓库状态

git diff XX 查看XX文件修改了那些内容

git log 查看历史记录

git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本

(如果想回退到100个版本,使用git reset –hard HEAD~100 )

cat XX 查看XX文件内容

git reflog 查看历史记录的版本号id

git checkout — XX 把XX文件在工作区的修改全部撤销。

git rm XX 删除XX文件

git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库

git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库

git clone https://github.com/tugenhua0707/testgit 从远程库中克隆

git checkout –b dev 创建dev分支 并切换到dev分支上

git branch 查看当前所有的分支

git checkout master 切换回master分支

git merge dev 在当前的分支上合并dev分支

git branch –d dev 删除dev分支

git branch name 创建分支

git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作

git stash list 查看所有被隐藏的文件列表

git stash apply 恢复被隐藏的文件,但是内容不删除

git stash drop 删除文件

git stash pop 恢复文件的同时 也删除文件

git remote 查看远程库的信息

git remote –v 查看远程库的详细信息

git push origin master Git会把master分支推送到远程库对应的远程分支上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值