1. 使用git fork一個(gè)遠(yuǎn)程A的代碼倉(cāng)庫(kù)的副本到自己的遠(yuǎn)程倉(cāng)庫(kù)
在gitlab或者github上面有fork操作按鈕
2. 拉取自己的遠(yuǎn)程倉(cāng)庫(kù)到自己的本地
$ 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代碼都需要輸入用戶名和密碼驗(yàn)證身份 如下:
$ git push origin master
Username for 'https://github.com': xxx@163.com
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
為了方便 現(xiàn)在把拉取遠(yuǎn)程代碼的倉(cāng)庫(kù)地址換成ssh的
$ git remote set-url git@github.com:xxx/yyy.git // 命令錯(cuò)誤
usage: git remote set-url [--push] <name> <newurl> [<oldurl>]
or: git remote set-url --add <name> <newurl>
or: git remote set-url --delete <name> <url>
--push manipulate push URLs
--add add URL
--delete delete URLs
$ git remote set-url --push origin git@github.com:xxx/yyy.git
3. 修改后提交到自己的遠(yuǎn)程倉(cāng)庫(kù)
添加本地修改到暫存區(qū)
$ 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
查看代碼狀態(tài)
$ 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
沒(méi)有問(wèn)題后,把本地代碼更新到遠(yuǎn)程倉(cāng)庫(kù)
$ 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的遠(yuǎn)程代碼
// 先查看下遠(yuǎn)程代碼倉(cāng)庫(kù)
$ 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)
// 添加上游代碼倉(cāng)庫(kù)
$ git remote add upstream https://github.com/aaa/yyy.git
// 或者使用git remote -v查看遠(yuǎn)程代碼倉(cāng)庫(kù)修壕,現(xiàn)在已經(jīng)添加成功
$ 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)
// 拉取上游代碼倉(cāng)庫(kù)的代碼
$ 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)
查看代碼狀態(tài)
$ 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 <file>..." to mark resolution)
both modified: readme.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: .idea/workspace.xml
no changes added to commit (use "git add" and/or "git commit -a")
保存修改的本地代碼到緩存區(qū)缓窜,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
把本地最新代碼同步到自己的遠(yuǎn)程倉(cāng)庫(kù)
4. 發(fā)送pull request將自己修改的代碼合并到A的遠(yuǎn)程代碼倉(cāng)庫(kù)
在gitlab或者github上發(fā)起pull request 或者new merge request 等待A倉(cāng)庫(kù)的管理員進(jìn)行merge
5. B從A fork一個(gè)遠(yuǎn)程A的代碼倉(cāng)庫(kù)的副本到B的遠(yuǎn)程倉(cāng)庫(kù),修改代碼后push到B的遠(yuǎn)程倉(cāng)庫(kù)
6. 當(dāng)我需要同步B的最新代碼浪腐,拉取B的遠(yuǎn)程代碼到自己的本地
git 命令窗清屏
$ clear
添加B的遠(yuǎn)程代碼倉(cāng)庫(kù),并重命名bbb
$ git remote add bbb https://github.com/bbb/yyy.git
xxx@xxx MINGW64 /e/yyy(master)
// 查看已經(jīng) 添加成功
$ git remote -v
origin https://github.com/xxx/yyy.git (fetch)
origin git@github.com: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的遠(yuǎn)程拉取最新代碼 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<E6><98><AF><E4><B8><80>
<E4><B8><AA><E5><88><86><E5><B8><83><E5><BC><8F><E7><89><88><E6><9C><AC><E6><8E> <A7><E5><88><B6><E7><B3><BB><E7><BB><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 并沒(méi)有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的遠(yuǎn)程代碼倉(cāng)庫(kù)顿乒,直接拉取
$ 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. 關(guān)于重置ssh-key
重置ssh-key
$ ssh-keygen -t rsa -C "your github email@163.com"
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 special_yjl@163.com
The key's randomart image is:
+---[RSA 2048]----+
| ...o... |
| oB. + |
| ..o+* o |
| . + . = o ..|
| + S = . ...|
| E + = + ..|
| . + * o o|
| . B +.o+ o|
| . o.*=o*=|
+----[SHA256]-----+
8. 我還會(huì)回來(lái)的......
[后續(xù)--git fork 涉及分支](http://www.reibang.com/p/7ec8e2e5b3dc)