github常用命令

几个基本Github命令的使用。

1.git clone
          用于克隆代码到本地。     
           git clone url ——克隆url对应的项目到本地。
          git clone url folderName ——将url对应的项目克隆岛folderName文件夹
2. git pull 

           Github支持协作代码开发管理,会经常遇到需要更新别人的代码或者在不同的电脑上更新自己的代码。那么使用git pull命令即可更新代码。git pull 可以接受很多中参数,详见常见具体的用法为:

           git pull—— 直接从远程主分支更新代码 , git pull 相当于git pull origin master

           git pull forkName branchName —— 从forkName对应的url更新branchName分支。

3. git remote

    用于管理远程仓库。

          git remote —— 显示已经添加的远程仓库名称列表,当从远程地址上clone了一个项目时,会默认添加一个origin名字的仓库,对应clone时的url。等同于git remote show

        git remote show name —— 显示具体名字对应的仓库的信息。具体如下:      

  1. * remote origin  
  2.   Fetch URL: https://github.com/gavincook/test.git  
  3.   Push  URL: https://github.com/gavincook/test.git  
  4.   HEAD branch: master  
  5.   Remote branch:  
  6.     master tracked  
  7.   Local branch configured for 'git pull':  
  8.     master merges with remote master  
  9.   Local ref configured for 'git push':  
  10.     master pushes to master (up to date)  
* remote origin
  Fetch URL: https://github.com/gavincook/test.git
  Push  URL: https://github.com/gavincook/test.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

        git remote add name url —— 添加远程仓库。如:

  1. git remote add antstudio git@github.com:AntStudio/test.git  
git remote add antstudio git@github.com:AntStudio/test.git

    git remote rm name——删除远程仓库在本地的映射。 如:

  1. git remote rm antstudio  
git remote rm antstudio

4. git fetch
      用于更新代码,和git pull 功能类似,但是有一些区别。git pull 更新完代码后会自动合并到当前分支,而git fetch不会合并。常见用法如下:

      git fetch origin master ——— 将分支代码更新到origin/master分支上
      git fetch forkName remoteBranchName:branchName ——— 将分支代码更新到branchName分支上

5. git merge
处理分支的合并。

       git merge master —— 将主分支合并到当前分支。如果没有任何冲突则使用此命令即可。 

这里说下有冲突的情况,现在在两个分支都对同一个文件进行修改,在同一个文件中,如master分支添加“master commit”, test分支添加“test commit”. 然后将两个分支合并。在test分支合并主分支:git merge master.我们会看到如下的情况:

  1. Auto-merging test.txt  
  2. CONFLICT (content): Merge conflict in test.txt  
  3. Automatic merge failed; fix conflicts and then commit the result.  
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

也就是说两个分支有冲突,那么我们可以按照以下步骤进行冲突的解决:

    (1).首先把改动恢复到merge之前,因为目前的状态是:

       

  1. Unmerged paths:  
  2.   (use "git add <file>..." to mark resolution)  
  3.   
  4.       both modified:      test.txt  
 Unmerged paths:
   (use "git add <file>..." to mark resolution)

       both modified:      test.txt

我们先添加改动到暂存区域,git add .,然后用git reset head -- .最后使用git checkout -- .取消改动。到这里,test就已经恢复到merge之前的状态

    (2).生成test分支相对于master的补丁

git format-patch master

      使用这个命令后我们得到“0001-.test-commit.patch”,在项目的根目录下,我们将这个文件剪切到其他目录,比如D:/

       (3).切回出分支,git chekcout master。 然后进行补丁修正,

             首先进行git am D:\0001-.test-commit.patch打补丁,如果没有冲突则此补丁修正成功,如果有冲突就会得到形如下面的结果:

  1. E:\workspace\github\test [master]> git am D:\0001-.test-commit.patch  
  2. Applying: .test commit  
  3.  rror: patch failed: test.txt:1  
  4. error: test.txt: patch does not apply  
  5. Patch failed at 0001 .test commit  
  6.   
  7.    e:/workspace/github/test/.git/rebase-apply/patch  
  8.                esolved this problem, run "git am --resolved".  
  9. If you prefer to skip this patch, run "git am --skip" instead.  
  10. To restore the original branch and stop patching, run "git am --abort".  
E:\workspace\github\test [master]> git am D:\0001-.test-commit.patch
Applying: .test commit
 rror: patch failed: test.txt:1
error: test.txt: patch does not apply
Patch failed at 0001 .test commit

   e:/workspace/github/test/.git/rebase-apply/patch
               esolved this problem, run "git am --resolved".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

接着使用git apply --reject D:\0001-.test-commit.patch生成rej文件,来辅助我们解决冲突:

   我们可以得到如下结果:

  1. E:\workspace\github\test [master]> git apply --reject D:\0001-.test-commit.patch  
  2.   
  3. Checking patch test.txt...  
  4. error: while searching for:  
  5. Github test!  
  6. Hello Gavin.  
  7. error: patch failed: test.txt:1  
  8. Applying patch test.txt with 1 reject...  
  9. Rejected hunk #1.  
  10. E:\workspace\github\test [master +1 ~0 -0 !]>  
E:\workspace\github\test [master]> git apply --reject D:\0001-.test-commit.patch

Checking patch test.txt...
error: while searching for:
Github test!
Hello Gavin.
error: patch failed: test.txt:1
Applying patch test.txt with 1 reject...
Rejected hunk #1.
E:\workspace\github\test [master +1 ~0 -0 !]>


此时我们会发现在冲突文件同级目录下生成了一个rej文件,我们打开这个rej文件,可以看到:

  1. diff a/test.txt b/test.txt  (rejected hunks)  
  2. @@ -1,2 +1,3 @@  
  3.  Github test!  
  4. -Hello Gavin.  
  5. \ No newline at end of file  
  6. +Hello Gavin.  
  7. +Test commit!  
  8. \ No newline at end of file  
diff a/test.txt b/test.txt	(rejected hunks)
@@ -1,2 +1,3 @@
 Github test!
-Hello Gavin.
\ No newline at end of file
+Hello Gavin.
+Test commit!
\ No newline at end of file


即说明在Hello Gavin的下一行添加了一个Test commit的文本,而我们主分支呢,也在Hello Gavin的下一行添加了一行文本,"master test!". 我们可以直接将"Test commit!" 添加到test.txt即可,比如我们这里就添加到"master test!"的下一行,然后保存。(实际解决冲突的时候需要根据具体的情况来处理)

   (4).提交补丁的改动,现在我们已经解决了冲突的代码部分,接着我们应该提交这个改动。首先使用 git rm -f .\test.txt.rej来删除rej文件,只需要提交改动的代码文件。

     

  1. git add .  
  2.   
  3. git am --resolved  
git add .

git am --resolved

这样就完成了一个有冲突的补丁的修正,如果有多个补丁可以重复此步骤进行处理。

6.  git branch
        用于本地分支的管理
       git branch —— 查看当前仓库的所有本地分支
       git branch branchName —— 创建名字为branchName的分支
       git branch -D branchName—— 删除名字为branchName的分支
      
7.  git checkout
          git checkout用于分支的切换,如:
          git checkout test —— 如果test分支存在,则切换到test分支
        git checkout -b test —— 用于test分支不存在的情况,会先创建test分支再切换到test分支。相当于 git branch test , git checkout test两条命令



这里主要介绍了一些常用的命令,git的命令还有很多,每一个命令的用法也有很多。

转自:http://blog.csdn.net/gavincook/article/details/17429137
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值