git入门1

2016-04-23/19:25:02

参考:http://blog.jobbole.com/78960/

Git bash中运行git log之后怎样终止这个命令,按q,再按回车键
清屏 clear
查询用户名
$ git config --global user.name
查询用户邮箱
$ git config --global user.email
创建文件夹 mkdir
显示当前的目录 pwd

git init 初始化仓库,多了个.git文件夹。该文件夹是隐藏的。

$ git add text1.txt ,添加文件到“暂存区”
$ git commit -m "text1 第一次提交" ,把文件提交到“仓库”,并添加提交信息
$ git status ,查看提交状态

接着向文件text1.txt添加一行文字,再次查询$ git status会提醒文件没有提交
$ git diff text1.txt ,查看修改了什么内容。
每次修改文件,都要add和commit一次。

$ git log ,查看历史提交。
$ git log --pretty=oneline,简化历史提交信息。带有commit的信息。

$ git reset --hard HEAD^,回退到上一个版本。
回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推
回退到前100个版本的话git reset –hard HEAD~100 即可
$ cat text1.txt,查看浏览内容


$ git reflog,查看所有修改信息。
$ git reset --hard 18d3d6a,git reset --hard 版本号,回退到最新的版本

------------------------------
理解工作区与暂存区的区别?
工作区:就是你在电脑上看到的目录

版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。
版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建
了第一个分支master,以及指向master的一个指针HEAD。

我们前面说过使用Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

———————————————

Git撤销修改和删除文件操作。

未提交之前:
方法一:直接手动修改文件,然后add,commit掉
方法二:$ git reset --hard HEAD^,回退上一个版本
方法三:git status会提示,
(use "git checkout -- <file>..." to discard changes in working directory)
即:把text1.txt文件在工作区做的修改全部撤销。
命令如下:$ git checkout -- text1.txt

这里有2种情况,如下:

1·readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
2·另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。

对于第二种情况,
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: text1.txt

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: text1.txt

使用,$ git checkout -- text1.txt,就可以回到之前。

注意:命令git checkout — readme.txt 中的 — 很重要,如果没有 — 的话,那么命令变成创建分支了。

——————————————————

删除文件:
$ rm b.txt
删除一个文件,必须先staged
(use "git add/rm <file>..." to update what will be committed),然后在commit掉。


只要没有commit之前,如果我想在版本库中恢复此文件如何操作呢?
可以使用如下命令 git checkout — b.txt,


————————
远程仓库:

 

第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:
$ ssh-keygen -t rsa -C "mo@gmail.com"
密码为空。
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

验证绑定状态:
$ ssh -T git@github.com
The authenticity of host 'github.com (192.30.252.128)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.128' (RSA) to the list of known hosts.

Hi sym1120! You've successfully authenticated, but GitHub does not provide shell access.

————————————————————
将本地repo推送到github上面。先有本地库,后有远程库时候,如何关联远程库。

git remote add origin https://github.com/sym1120/test3.git
git push -u origin master
会提示输入用户名和密码。
——————————————————
$ git remote add origin https://github.com/sym1120/test3.git
fatal: remote origin already exists.

$ git push -u origin master
Counting objects: 18, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (18/18), 1.51 KiB | 0 bytes/s, done.
Total 18 (delta 1), reused 0 (delta 0)
To https://github.com/sym1120/test3.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.

 

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

$ git push origin master

把本地master分支的最新修改推送到github上了,现在你就拥有了真正的分布式版本库了。

 

————————————————————————————
2. 如何从远程库克隆?

上面我们了解了先有本地库,后有远程库时候,如何关联远程库。

现在我们想,假如远程库有新的内容了,我想克隆到本地来 如何克隆呢?

选择一个目录,选择要克隆的项目的地址;
$ git clone https://github.com/sym1120/qqqq
Cloning into 'qqqq'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.

 

————————————

 

创建与合并分支:

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

$ git checkout -b dev,表示创建并切换,相当于如下2条命令

git branch dev 创建dev分支。
git branch 查看当前分支
git checkout dev切换分支

合并分支:
$ git merge dev
Updating 723f293..a57b9ba
Fast-forward
text1.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)


删除分支:
$ git branch -d dev
Deleted branch dev (was a57b9ba).

_________________________
分支管理策略。

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

$ git merge --no-ff -m "merge with no-ff" dev

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

再次查询分支信息
$ git log --graph --pretty=oneline --abbrev-commit
* 1e94401 merge with no-ff
|\
| * d17856f dev add 1111111111111111
|/
* 78f1a08 fix conflicts
|\
| * b1045bc fenzhi add 99999999
* | 9cd6034 master add 999999999
|/
* a57b9ba dev add 88888
* 723f293 text fix finally
|\
| * 8cbe83c fix sencond
* | ce3d4fb fix
* | c79faa0 wwwwwwwwwwwwwwww
|\ \
| |/
| * 698a974 dev add 77777
* | afdee18 test
|/
* b963e81 change txt
* 424cce8 b.txt test
* 0273164 first add b.txt
* 4757d5e 最后一次修改text1.txt
* 4595644 一次性提交所有文件
* 18d3d6a 第三次修改文件
* 6e7d069 text1.txt添加一行22222的内容
* 06daaa0 text1 第一次提交


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


————————

bug分支:

在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

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

 -----------------------------------------------------------------------------------------------

更新:

分支管理策略:

通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。
合并分支:git merge --no-ff -m "merge" ddd
查看信息:git log --graph --pretty=oneline --abbrev-commit

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

------------------------
bug分支:

在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下:

$ git status
On branch fenzhi
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: qq.txt

no changes added to commit (use "git add" and/or "git commit -a")


还好,Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作。
$ git stash
Saved working directory and index state WIP on fenzhi: bc305fe fenzhi first add
HEAD is now at bc305fe fenzhi first add

BUG修复完毕后,再回到DEV分支,继续工作。
$ git stash list
stash@{0}: WIP on fenzhi: bc305fe fenzhi first add

工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:

1·git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2·另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
————————————————————————


多人协作。

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

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


一:推送分支:

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


那么一般情况下,那些分支要推送呢?

master分支是主分支,因此要时刻与远程同步。
一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。

现在我们的小伙伴要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,于是可以使用命令创建本地dev分支:git checkout –b dev origin/dev

 --------------------------------------------

现在我们的小伙伴要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,于是可以使用命令创建本地dev分支:git checkout –b dev origin/dev

当远程BUG 分支已经修复,我也要提交的话,必须先pull,在push
$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/sym1120/test3
e17e8d2..ee71138 bug -> origin/bug
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> bug


git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:如下:

先$ git branch --set-upstream bug origin/bug
再Pull

提示你会有冲突,先修复,再PUSH即可。

 

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

  1. 首先,可以试图用git push origin branch-name推送自己的修改.
  2. 如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
  3. 如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
    1. 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分支推送到远程库对应的远程分支上

转载于:https://www.cnblogs.com/SYM1120/p/5425343.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值