Git(1)---git fork 在master上的简单尝试,暂未涉及分支

1. 使用git fork一个远程A的代码仓库的副本到自己的远程仓库

在gitlab或者github上面有fork操作按钮

2. 拉取自己的远程仓库到自己的本地

$ git clone https://github.com/xxx/yyy.git
Cloning into 'dingding'...
remote: Counting objects: 52, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 52 (delta 4), reused 52 (delta 4), pack-reused 0
Receiving objects: 100% (52/52), 1.20 MiB | 40.00 KiB/s, done.
Resolving deltas: 100% (4/4), done.

我第一次clone代码使用的地址是https所以每次push代码都需要输入用户名和密码验证身份 如下:

$ git push origin master
Username for 'https://github.com': [email protected]
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 561 bytes | 0 bytes/s, done.
Total 5 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/xxx/yyy.git
   9623903..ca025de  master -> master

为了方便 现在把拉取远程代码的仓库地址换成ssh的

$ git remote set-url [email protected]:xxx/yyy.git  // 命令错误
usage: git remote set-url [--push]   []
   or: git remote set-url --add  
   or: git remote set-url --delete  

    --push                manipulate push URLs
    --add                 add URL
    --delete              delete URLs


$  git remote set-url --push origin [email protected]:xxx/yyy.git

3. 修改后提交到自己的远程仓库

添加本地修改到暂存区

$ git add --all
warning: LF will be replaced by CRLF in .idea/yyy.iml.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in .idea/modules.xml.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in .idea/workspace.xml.
The file will have its original line endings in your working directory.

提交本地修改到本地分支

$ git commit -m "conflict fixed"
[master 26c2de4] conflict fixed
 4 files changed, 283 insertions(+), 1 deletion(-)
 create mode 100644 .idea/datura_lj.iml
 create mode 100644 .idea/modules.xml
 create mode 100644 .idea/workspace.xml

查看代码状态

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean

没有问题后,把本地代码更新到远程仓库

$ git push origin master
Counting objects: 16, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (16/16), 4.58 KiB | 0 bytes/s, done.
Total 16 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), completed with 1 local object.
To github.com:xxx/yyy.git
   ca025de..5ae59c1  master -> master

拉取A的远程代码

// 先查看下远程代码仓库

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/xxx/yyy.git
  Push  URL: https://github.com/xxx/yyy.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 upstream https://github.com/aaa/yyy.git

// 或者使用git remote -v查看远程代码仓库,现在已经添加成功

$ git remote -v
origin  https://github.com/xxx/yyy.git (fetch)
origin  https://github.com/xxx/yyy.git (push)
upstream        https://github.com/Datura900607/datura_lj.git (fetch)
upstream        https://github.com/Datura900607/datura_lj.git (push)

// 拉取上游代码仓库的代码

$ git pull upstream master
From https://github.com/aaa/yyy
 * branch            master     -> FETCH_HEAD
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

xxx@xxx MINGW64 /e/yyy(master|MERGING)

查看代码状态

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add ..." to mark resolution)

        both modified:   readme.txt

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

        modified:   .idea/workspace.xml

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

保存修改的本地代码到缓存区,commit本地代码要写备注

$ git add --all
warning: LF will be replaced by CRLF in .idea/workspace.xml.
The file will have its original line endings in your working directory.

$ git commit -m "fixed form fork"
[master 5ae59c1] fixed form fork

把本地最新代码同步到自己的远程仓库

4. 发送pull request将自己修改的代码合并到A的远程代码仓库

在gitlab或者github上发起pull request 或者new merge request 等待A仓库的管理员进行merge

5. B从A fork一个远程A的代码仓库的副本到B的远程仓库,修改代码后push到B的远程仓库

6. 当我需要同步B的最新代码,拉取B的远程代码到自己的本地

git 命令窗清屏

$ clear

添加B的远程代码仓库,并重命名bbb

$ git remote add bbb https://github.com/bbb/yyy.git

xxx@xxx MINGW64 /e/yyy(master)
// 查看已经 添加成功
$ git remote -v
origin  https://github.com/xxx/yyy.git (fetch)
origin  [email protected]:xxx/yyy.git (push)
upstream        https://github.com/aaa/yyy.git (fetch)
upstream        https://github.com/aaa/yyy.git (push)
bbb https://github.com/bbb/yyy.git (fetch)
bbb https://github.com/bbb/yyy.git (push)

从B的远程拉取最新代码 git fetch , git merge

$ git fetch bbb master
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 2), reused 6 (delta 2), pack-reused 0
Unpacking objects: 100% (6/6), done.
From https://github.com/bbb/yyy
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> bbb/master
// 查看修改的地方

$ git diff
diff --git a/readme.txt b/readme.txt
index 80aafc0..3229bc6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,3 +1,3 @@
 Git is a distributed version control system.  => Git<98><80>
<88><86><83><8F><89><88><9C><8E>                                                                                                                                                                                               <88><9F>
 Git is free software distributed under the GPL.
-console.log('changed by xxx')
\ No newline at end of file
+# console.log('changed by xxx')
\ No newline at end of file

// git fetch 并没有merge

$ git merge
Already up-to-date.

直接使用git pull

$ git pull bbb master
From https://github.com/bbb/yyy
 * branch            master     -> FETCH_HEAD
Auto-merging readme.txt
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.

不添加B的远程代码仓库,直接拉取

$ git pull https://github.com/bbb/yyy.git master
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 1), reused 4 (delta 1), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/xmc123/datura_lj
 * branch            master     -> FETCH_HEAD
Auto-merging readme.txt
Merge made by the 'recursive' strategy.
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

7. 关于重置ssh-key

重置ssh-key

$ ssh-keygen -t rsa -C "your github [email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa):
/c/Users/xxx/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/xxx/.ssh/id_rsa.
Your public key has been saved in /c/Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Qg09NpPxBdtL3/n8t4za/ssqgf0mhpPSGePUxIy4ZCs [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|      ...o...    |
|       oB. +     |
|      ..o+* o    |
|     . + . = o ..|
|      + S = . ...|
|     E + = +   ..|
|      . + * o   o|
|       . B +.o+ o|
|        . o.*=o*=|
+----[SHA256]-----+

8. 我还会回来的......

    [后续--git fork 涉及分支](http://www.jianshu.com/p/7ec8e2e5b3dc)

你可能感兴趣的:(Git(1)---git fork 在master上的简单尝试,暂未涉及分支)