【0009】Git的使用

【0009-001:参考文章及书籍

(1)Windows版软件下载地址:

https://git-for-windows.github.io/

(2)Ubuntu下载命令:

apt-get install git

(3)参考文章:

【01】http://www.linuxidc.com/Linux/2016-10/136376.htm

【0009-002:常用的命令

 =========================

(4)日常使用指南

Git初入

如果是第一次使用Git,你需要设置署名和邮箱:

$ git config --global user.name "用户名"
$ git config --global user.email "电子邮箱"
查看用户名和邮箱地址:

$ git config user.name $ git config user.email

将代码仓库clone到本地,其实就是将代码复制到你的机器里,并交由Git来管理:

$ git clone git@github.com:someone/symfony-docs-chs.git

你可以修改复制到本地的代码了(symfony-docs-chs项目里都是rst格式的文档)。当你觉得完成了一定的工作量,想做个阶段性的提交:

向这个本地的代码仓库添加当前目录的所有改动:

$ git add .

或者只是添加某个文件:

$ git add -p

我们可以输入

$git status

来看现在的状态,如下图是添加之前的:

Before addBefore add

下面是添加之后 的

After addAfter add

可以看到状态的变化是从黄色到绿色,即unstage到add。

三、推送至远程仓库

先在远程端建一个仓库" front end subjects",不要用中文,然后复制路径,再在git bash中输入命令:git remote add origin git@github.com:CynScm/front-end-subjects.git 添加远程仓库。然后输入命令:git push -u origin master 推送至远程仓库的master分支(其中origin是标识符,可以随便取,后面的路径可以选择ssh或者https形式的路径),最终远端就有了上传的小项目了,如图:

 

现在如果我再添加一个项目到这个仓库里,那么应该怎么在本地更新,简单起见,我新建一个README.md来代替才能使远程仓库也同步更新呢?

四 如何解决failed to push some refs to git

https://jingyan.baidu.com/article/f3e34a12a25bc8f5ea65354a.html

Administrator@PC-20150110FGWU /K/cocos2d/yc (master)

$ git push -u origin master

To git@github.com:yangchao0718/cocos2d.git

 ! [rejected]        master -> master (non-fast-forward)

error: failed to push some refs to 'git@github.com:yangchao0718/cocos2d.git

hint: Updates were rejected because the tip of your current branch is behin

hint: its remote counterpart. Integrate the remote changes (e.g.

hint: 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

工具/原料

 
  • git

方法/步骤

 
  1. 在使用git 对源代码进行push到gitHub时可能会出错,信息如下

     
  2. 此时很多人会尝试下面的命令把当前分支代码上传到master分支上。

    $ git push -u origin master

    但依然没能解决问题

     
  3. 出现错误的主要原因是github中的README.md文件不在本地代码目录中

     
  4. 可以通过如下命令进行代码合并【注:pull=fetch+merge]

    git pull --rebase origin master

     
  5. 执行上面代码后可以看到本地代码库中多了README.md文件

     
     
  6. 此时再执行语句 git push -u origin master即可完成代码上传到github

     
     
    ======================================= 

 【8】git问题Everything up-to-date解决

出现这个问题的原因是git提交改动到缓存,要push的时候不会将本地所有的分支都push掉,所以出现这个问题。我们应该告诉git提交哪个分支。

这里有种特殊的情况是如果你是fork别人的仓库再clone到本地的话,即使git上只有一个主分支,他还是可能出现这个错误。那么我们就需要新建分支提交改动然后合并分支。

接下来先创建一个新分支提交改动

  1. $ git branch newbranch  

然后输入这条命令检查是否创建成功

  1. $ git branch  

这时输出

  1. branch  
  2. master  

这样就创建成功了,前面的*代表的是当前你所在的工作分支。我们接下来就要切换工作分支。

  1. $ git checkout newbranch  

这样就切换完了,可以 $ git branch确认下。然后你要将你的改动提交到新的分支上。

  1. $ git add .  
  2. $ git commit -a  

此时可以 $ git status检查下提交情况。如果提交成功,我们接下来就要回主分支了,代码和之前一样。

  1. $ git checkout master  

然后我们要将新分支提交的改动合并到主分支上 

  1. $ git merge newbranch  

合并分支可能产生冲突这是正常的,虽然我们这是新建的分支不会产生冲突,但还是在这里记录下。下面的代码可以查看产生冲突的文件,然后做对应的修改再提交一次就可以了。

  1. $ git diff  

我们的问题就解决了,接下来就可以push代码了。

  1. $ git push -u origin master  

新建分支的朋友别忘了删除这个分支

  1. $ git branch -D newbranch  

如果想保留分支只是想删除已经合并的部分只要把大写的D改成小写的d就行了。

【9】git上传报错

AAA@DESKTOP-FFCJ8AI MINGW64 /h/002_QT/003_Qt/0002_Qt_WindowAndDialog (master)
$ git push origin master
Logon failed, use ctrl+c to cancel basic credential prompt.
Username for 'https://github.com': xxx
To https://github.com/CodingManPP/0002_Qt_WindowAndDialog.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/CodingManPP/0002_Qt_WindowAndDialog.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 [解决方法]

1、先拉下来,会自动合并的(不用操心)

git pull origin master

2、再上传

git push -u origin master

【10】git push origin与git push -u origin master的区别

$ git push origin

上面命令表示,将当前分支推送到origin主机的对应分支。 

如果当前分支只有一个追踪分支,那么主机名都可以省略。 

$ git push 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push。

$ git push -u origin master 上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。

 【11】commit 撤销

写完代码后,我们一般这样

git add . //添加所有文件

git commit -m "本功能全部完成"

执行完commit后,想撤回commit,怎么办?


这样凉拌:

git reset --soft HEAD^

这样就成功的撤销了你的commit

注意,仅仅是撤回commit操作,您写的代码仍然保留。


说一下个人理解:
HEAD^的意思是上一个版本,也可以写成HEAD~1

如果你进行了2次commit,想都撤回,可以使用HEAD~2


至于这几个参数:
--mixed 
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

--soft  
不删除工作空间改动代码,撤销commit,不撤销git add . 

--hard
删除工作空间改动代码,撤销commit,撤销git add . 

注意完成这个操作后,就恢复到了上一次的commit状态。

顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。

posted @ 2017-05-13 09:31  OzTaking  阅读(138)  评论(0)    收藏  举报