校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Linux操作Git遠程倉庫與本地倉庫同步的教程

Linux操作Git遠程倉庫與本地倉庫同步的教程

熱門標簽:依蘭縣地圖標注app 公司400電話辦理價格 安陽百應電銷機器人加盟 琿春市地圖標注app 潮州地圖標注 pageadm實現地圖標注 百度地圖標注開鎖電話 山東企業電銷機器人價格 百度中國地圖標注中心

創建本地倉庫并同步到遠程
git是非常強大的版本管理工具。接下來的時間里,我就和大家絮叨絮叨git的入門:如何在本地創建一個git倉庫,并把自己的本地代碼同步到遠程。此教程是在mac上操作的,如果您的系統是Linux,那么操作方法相同;如果您的系統是windows,那么,只需要把git的bash窗口調出來,以后的過程也都與Linux相同。
一、首先,您需要安裝git,此步就忽略了,自行安裝即可。

二、假設你目前還沒有創建一個工作目錄,那么,先創建一個目錄吧,就叫StudyGit。

三、現在的StudyGit目錄還只是一個本地目錄,和git沒有任何關聯,那么,我們怎么樣才能把這個目錄和git關聯起來呢?只需要進入StudyGit目錄,運行如下命令:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git init
Initialized empty Git repository in /Users/yanyaozhen/Coding/Practice/StudyGit/.git/

提示已經說明我們初始化了一個空的本地git倉庫。如果你查看StudyGit下的所有文件時,會發現一個.git 的隱藏文件,這個文件非常重要,版本的控制就靠它了。同時,如果你要部署應用程序到生產環境時,切記不要把該目錄部署到服務器,因為這可是黑客的最愛啊!

四、接下來我們來看一個基本可以說是用的最頻繁的一個命令:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status

On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)
沒錯,就是"git status"。這個命令用于查看當前git的狀態,比如,上面的例子中,我們剛創建了一個空的git倉庫,那么運行該指令時,git會提示我們,當前沒有任何東西要提交,同時提示我們,可以創建或者復制文件后使用“git add”命令來跟蹤文件的變化。

五、現在讓我們來創建一個文件吧。我們創建一個叫“a.txt”的文本文件,并且內容如下:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ cat a.txt

aaa
這個時候,讓我們再來運行下git status吧。運行如下:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status

On branch master

Initial commit

Untracked files:
  (use "git add file>..." to include in what will be committed)

    a.txt

nothing added to commit but untracked files present (use "git add" to track)
這時會提示我們有一個未追蹤的文件,叫a.txt。我們要把這個文件加入到版本控制中,于是,我們運行如下命令:

復制代碼
代碼如下:

git add a.txt

這個命令表示把我們指定的a.txt加入到git控制之下。add命令可以沒有參數(在windows下可以沒有參數,在mac下需要指定當前目錄即“.”),如果沒有參數,則表示把目錄下的所有文件都加入到git倉庫中。這個時候,我們再運行下“git status”:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status

On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached file>..." to unstage)

    new file:   a.txt
提示我們有改變需要被提交。這個時候,a.txt這個文件就存在于所謂的“暫存區”中,暫存區中的文件可以被真正提交到git倉庫。有同學可能說,如果我不想提交這個文件了,那怎么把剛才的文件從暫存區移除呢?其實答案就在剛才的提示中:
use "git rm --cached ..." to unstage。
那么,我們運行下這個命令:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git rm --cached a.txt

rm 'a.txt'
再運行git status時就可以發現,又回到文件沒有被提交時的狀態了。

六、當我們的文件已經通過“git add”加入到暫存區后,就可以把文件真正提交到git倉庫了。如下:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git commit -m "提交a.txt"

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'yanyaozhen@macbookpro.(none)')
阿歐,報錯了,查看給出的錯誤原因,發現是因為沒有設置email和用戶名,所以git不讓我提交。git為什么要強制要求設置了這兩個配置才能提交呢?因為git必須得知道是誰提交的,如果連誰提交的都不知道,那還怎么做版本管理啊,是不。所以我們根據提示設置下:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git config --global user.email "youremail@example.com"
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git config --global user.name "yourusername"
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$

好了,我們再提交下:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git commit -m "提交a.txt"

[master (root-commit) dab07d0] 提交a.txt
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
發現已經可以提交成功了,提示一個文件被修改(就是我們的a.txt),一行被插入(就是我們唯一的一行“aaa”)。
我們再運行下git status:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status

On branch master
nothing to commit, working directory clean
提示我們當前沒有東西要提交,當前工作目錄是干凈的,因為我們都提交到git了。
好了,到這步后,git就可以完全跟蹤已經被提交的文件了,以后,這個文件的任何修改,它都可以記錄下來。比如某個人對項目私自修改了一些東西,項目管理者根據git的版本記錄是一定可以找到是誰修改了哪些文件的。
現在我們就可以把文件提交到遠程服務器了。

七、當我們要提交git倉庫中的內容到遠程服務器時,我們必須得先成為遠程服務器受信任的用戶才行(服務器當然不允許所有人都可以推送內容,那樣就亂套了)。這個時候,我們需要先在本地生成一個公鑰,然后把公鑰放到遠程服務器的賬戶列表中。生成公鑰的命令如下:

復制代碼
代碼如下:

ssh-keygen -t rsa -C "youremail@example.com"

如果你是windows用戶,那么公鑰生成的目錄是C:\Users\用戶名.ssh下,里面有兩個文件 id_rsa 和 id_rsa.pub ,其中id_rsa.pub中的內容就是我們需要的公鑰。如果你是Linux或者mac用戶,那么在用戶主目錄下也會有一個.ssh目錄,里面放著的是私鑰和公鑰。假設我們現在要把github作為遠程推送服務器地址,那么,我們首先把公鑰放在github的settings->SSH keys列表中(點擊新建一個ssh key,title隨意,把公鑰的全部內容復制進行保存即可)。

八、現在我們可以給StudyGit項目在github上添加一個遠程倉庫了。在github上add new repository,名字我在這里也用StudyGit了(起其他名字也可以),建好后顯示如下:

可以看到有一個ssh地址是git@github.com:onlyanyz/StudyGit.git,這個就是我們的遠程git倉庫地址了,一會我們就會把文件推送到這里。
接下來,我們需要把本地git倉庫關聯到遠程git倉庫,操作如下:進入本地StudyGit根目錄,執行如下命令:

復制代碼
代碼如下:

git remote add origin git@github.com:onlyanyz/StudyGit.git

這個命令的意思是,我給遠程倉庫(就是git@github.com:onlyanyz/StudyGit.git)起了個別名,叫origin(其實叫別的名字也可以,你只要知道這是別名就行,以后就用別名來操作遠程庫)。操作后,我們可以使用“git remote”命令來查看當前本地倉庫關聯了哪些遠程倉庫(它會列出每個遠程庫的簡短名字。如果您之前會使用git clone命令的話,在克隆完某個項目后,至少可以看到一個名為 origin 的遠程庫,Git默認使用這個名字來標識你所克隆的原始倉庫)。

九、關聯了遠程倉庫之后,我們就可以推送了。將本地倉庫push到遠程倉庫的命令如下:

復制代碼
代碼如下:

git push origin master

命令解釋如下:
git push的語法為:git push 遠程主機名> 本地分支名>:遠程分支名>
該語法表示把本地分支名push到遠程主機名的遠程分支。我們可以看到剛才執行的語句并沒有遠程分支名(被省略了),如果省略遠程分支名,則表示將本地分支推送到與之存在”追蹤關系”的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建。所以剛才執行的語句的意思是,把本地的master分支推送到遠程主機的master分支。
關于git push命令以后還需要注意的地方:
a.如果省略本地分支名,則表示刪除指定的遠程分支,因為這等同于推送一個空的本地分支到遠程分支。例如:

復制代碼
代碼如下:

$ git push origin :master

該命令等同于如下指令:$ git push origin --delete master,表示刪除遠程主機的master分支。
b.git push 有時候本地分支和遠程分支名都可以省略,有時候連主機名也可以省略,這個現在就不細說了。
c.如果當前分支與多個主機存在追蹤關系,則可以使用-u選項指定一個默認主機,這樣后面就可以不加任何參數使用git push:

復制代碼
代碼如下:

$ git push -u origin master

好了,現在我們已經把StudyGit目錄中的內容都推送到遠程了,現在運行git status看下:

復制代碼
代碼如下:

~/Coding/Practice/StudyGit$ git status

On branch master
nothing to commit, working directory clean
工作目錄還是干凈的,接下來您就可以繼續在本地進行創建文件->提交到暫存區->提交到本地倉庫->push到遠程倉庫的過程啦!

將遠程倉庫克隆到本地
下面我們來講一個新的玩法,就是先有遠程倉庫,后有本地倉庫,即把遠程倉庫“克隆(clone)”到本地。
假設現在你的團隊其他成員已經在git上建好了倉庫,并且也push過代碼,這個遠程git倉庫還叫“StudyGit”,有兩個文件:a.txt和README.md,現在,您也要開始貢獻代碼了,那么,您首先需要把團隊其他成員提交的所有東西都拉取到你的本地目錄,這個時候就會用到“clone”命令了:

復制代碼
代碼如下:

git clone git@github.com:onlyanyz/StudyGit.git

只要執行這句指令,就可以把遠程倉庫的所有東西都拉取到本地工作目錄了,當然生成的本地目錄名和遠程倉庫名字是一樣的。
如果您現在查看下當前本地git倉庫的狀態,如下:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/StudyGit$ git status

On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
命令回顯表示,我的本地分支已經更新為最新的遠程master分支了。此后,我們就可以按照“git快速入門之一”這篇文章所述進行添加代碼并提交了。
現在,讓我們再看下剛才clone到本地的git項目,現在有兩個文件,如下:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/StudyGit$ ll

total 16
-rw-r--r--  1 yanyaozhen  staff    21B 11 19 00:04 README.md
-rw-r--r--  1 yanyaozhen  staff     4B 11 19 00:04 a.txt
接下來,假如A同學在github上的這個倉庫中又新增了一個文件b.txt,那現在github遠程倉庫中就有三個文件(注意,現在本地倉庫中的文件就已經與遠程倉庫不同了)。
接下來,我們在本地繼續我們的開發工作,假如新建了一個文件“c.txt”,現在,讓我們來把"c.txt"文件加入暫存區,然后commit到本地倉庫,這時,我們想把剛才的工作成果再push到遠程,執行如下:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/StudyGit$ git push origin master

To git@github.com:onlyanyz/StudyGit.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:onlyanyz/StudyGit.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.
阿歐,報錯了,懂點英文的同學可以從提示信息看出問題所在,因為我們的遠程已經有更新了,我們在push到遠程的時候,必須先把遠程的改動拉到本地合并起來,才能再次提交我的修改。所以,以下的命令就出場了:

復制代碼
代碼如下:

$ git fetch origin master

該指令意思是從遠程origin倉庫的master主分支更新最新的版本到origin/master分支上。
然后我們比對下當前本地master分支和origin/master分支的區別:

復制代碼
代碼如下:

$ git log -p master..origin/master

執行的回顯結果會詳細列出這兩個分支的差異。
然后,我們需要把origin/master分支上的內容合并到本地master分支:

復制代碼
代碼如下:

git merge origin/master

執行該指令后,可能會要求輸入合并的理由,填寫后,我們就合并成功了。這個時候,我們就可以再次push了:

復制代碼
代碼如下:

yanyaozhen@macbookpro:~/Coding/StudyGit$ git push origin master

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 543 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To git@github.com:onlyanyz/StudyGit.git
   6b3662f..6036a05  master -> master
表示push成功,現在你可以去github上看到我們在本地新建的b.txt文件啦!
后記:有同學可能查了網上的資料,說“git fetch”和“git merge”指令可以合二為一,叫“git pull”,在此強烈建議大家使用分開的指令,因為“git pull”會直接合并,而不會等你確認,如果一旦合并錯了,還是比較麻煩的。寧可慢一點,也別重頭再來。

標簽:晉中 連云港 三明 常德 呼和浩特 公主嶺 香港 林芝

巨人網絡通訊聲明:本文標題《Linux操作Git遠程倉庫與本地倉庫同步的教程》,本文關鍵詞  Linux,操作,Git,遠程,倉庫,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux操作Git遠程倉庫與本地倉庫同步的教程》相關的同類信息!
  • 本頁收集關于Linux操作Git遠程倉庫與本地倉庫同步的教程的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产精品久久久久久久久图文区| 国产呦精品一区二区三区网站| 日本成人在线看| 成人精品国产一区二区4080| 欧美日韩国产精品自在自线| 国产精品久久久久久久久动漫| 日本91福利区| 欧美午夜不卡视频| 国产精品国产自产拍高清av| 久久se精品一区精品二区| 在线亚洲精品福利网址导航| 欧美国产激情二区三区| 国产一区二区在线观看视频| 欧美一区二区三区不卡| 亚洲一区在线看| 色婷婷av一区二区三区gif | 欧美三级欧美一级| 日韩美女精品在线| 成人黄色小视频在线观看| 精品福利一二区| 国产综合色精品一区二区三区| 欧美一级二级三级乱码| 日韩高清一区在线| 3751色影院一区二区三区| 亚洲成人精品一区二区| 欧美日本不卡视频| 天天色综合天天| 欧美一区二区三区四区在线观看| 亚洲永久免费视频| 欧美日韩免费视频| 日韩中文字幕不卡| 91麻豆精品国产91久久久资源速度| 亚洲一区二区三区国产| 在线观看免费亚洲| 婷婷夜色潮精品综合在线| 欧美日韩夫妻久久| 日韩av电影天堂| 欧美成人精品二区三区99精品| 天堂av在线一区| 欧美成人一区二区三区在线观看| 麻豆国产欧美日韩综合精品二区 | 中文欧美字幕免费| 97久久精品人人做人人爽| 亚洲老妇xxxxxx| 欧美日韩黄色影视| 黄色成人免费在线| 国产精品国产自产拍在线| 一本在线高清不卡dvd| 亚洲福利一区二区三区| 3atv在线一区二区三区| 韩国av一区二区三区在线观看| 国产无一区二区| 在线观看网站黄不卡| 秋霞av亚洲一区二区三| 久久婷婷久久一区二区三区| 99re热这里只有精品免费视频| 亚洲综合一区二区| 久久亚洲捆绑美女| 91久久久免费一区二区| 麻豆精品久久久| 亚洲色图欧洲色图| 精品免费视频一区二区| eeuss鲁片一区二区三区 | 精品欧美一区二区三区精品久久| 国产一区 二区 三区一级| 自拍偷自拍亚洲精品播放| 欧美精品高清视频| 成人一区二区三区视频在线观看| 亚洲第一福利一区| 久久久www免费人成精品| 在线视频综合导航| 国产成人午夜视频| 日韩和欧美的一区| 国产精品私人自拍| 精品久久久久久久久久久久久久久久久| 丁香五精品蜜臀久久久久99网站| 亚洲高清视频的网址| 国产蜜臀97一区二区三区| 欧美一区二区三区四区视频| 成人午夜私人影院| 美女视频黄久久| 亚洲一二三级电影| 国产精品久久久久影院亚瑟| 91精品国产一区二区人妖| 99久久精品免费观看| 精品一区二区三区免费播放| 亚洲一区二三区| 国产精品美女一区二区三区| 精品欧美久久久| 91麻豆精品国产91久久久资源速度| 91麻豆福利精品推荐| 国产一区999| 精品一区二区久久久| 日韩精品欧美精品| 亚洲精品亚洲人成人网| 欧美国产一区二区在线观看 | 欧美日韩一级片网站| 成人国产精品视频| 国产福利电影一区二区三区| 免费成人你懂的| 三级在线观看一区二区| 污片在线观看一区二区| 亚洲成人精品在线观看| 亚洲一区二区三区在线播放| 亚洲欧美一区二区三区久本道91 | 国产欧美一区二区精品性色超碰| 91精品国产综合久久精品图片| 欧美影院一区二区| 日本韩国欧美国产| 色婷婷av一区二区三区之一色屋| 97久久精品人人做人人爽| 97久久精品人人澡人人爽| 成人午夜激情视频| 成人a级免费电影| www.色精品| 色网综合在线观看| 欧洲人成人精品| 欧美日韩色一区| 日韩欧美卡一卡二| 欧美岛国在线观看| 国产视频一区二区在线观看| 欧美激情中文不卡| 亚洲欧美日韩一区二区| 亚洲一区免费在线观看| 日韩高清不卡一区二区三区| 久久国产三级精品| 国产成人亚洲综合色影视 | 国产精品综合久久| 成人永久免费视频| 91久久一区二区| 777欧美精品| 国产亚洲污的网站| 日韩伦理免费电影| 日韩va欧美va亚洲va久久| 黑人巨大精品欧美一区| www.色精品| 欧美日本在线视频| 欧美精品一区二区蜜臀亚洲| 国产蜜臀97一区二区三区| 亚洲自拍偷拍图区| 寂寞少妇一区二区三区| thepron国产精品| 欧美日韩中文一区| 精品日韩一区二区| 亚洲精品高清视频在线观看| 日韩av中文字幕一区二区三区| 国产成人夜色高潮福利影视| 欧美性受极品xxxx喷水| 亚洲精品在线电影| 亚洲自拍与偷拍| 国产a精品视频| 欧美剧在线免费观看网站 | 日韩欧美在线影院| 一区免费观看视频| 人禽交欧美网站| 99久久久精品免费观看国产蜜| 欧美一区永久视频免费观看| 中文子幕无线码一区tr| 麻豆精品一二三| 一本久久a久久免费精品不卡| 亚洲精品在线三区| 亚洲国产你懂的| 国产成人精品三级麻豆| 欧美一级免费大片| 亚洲一二三级电影| 97se亚洲国产综合在线| 欧美精品一区在线观看| 婷婷综合另类小说色区| 99v久久综合狠狠综合久久| 亚洲精品在线三区| 日本亚洲视频在线| 欧美日韩精品高清| 中文字幕一区av| 国产成人免费视频一区| 欧美一级二级三级蜜桃| 香蕉久久一区二区不卡无毒影院 | 国产一区视频网站| 91精品国产综合久久香蕉麻豆| 亚洲精品乱码久久久久久| 东方欧美亚洲色图在线| 精品成人a区在线观看| 青青草97国产精品免费观看 | 久久久久久一级片| 久久精品国产99国产精品| 91精品国产手机| 日韩中文字幕麻豆| 69堂成人精品免费视频| 亚洲国产综合色| 欧美日韩在线三级| 亚洲精品国产精品乱码不99| 96av麻豆蜜桃一区二区| 亚洲欧美一区二区久久 | 88在线观看91蜜桃国自产| 亚洲伊人色欲综合网| 在线观看91精品国产入口| 一区二区三区加勒比av| 欧美日韩和欧美的一区二区| 亚洲亚洲人成综合网络| 欧美在线观看禁18| 性做久久久久久|