国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - Linux操作Git遠程倉庫與本地倉庫同步的教程

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

2019-06-16 10:56閆耀珍的網站閆耀珍 Linux

這篇文章主要介紹了Linux操作Git遠程倉庫與本地倉庫同步的教程,本文以當下最熱門的GitHub上的項目同步為例進行講解,需要的朋友可以參考下

創建本地倉庫并同步到遠程
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 的隱藏文件,這個文件非常重要,版本的控制就靠它了。同時,如果你要部署應用程序到生產環境時,切記不要把該目錄部署到服務器,因為這可是黑客的最愛?。?/span>

 

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

復制代碼

代碼如下:


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了(起其他名字也可以),建好后顯示如下:
Linux操作Git遠程倉庫與本地倉庫同步的教程

可以看到有一個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到遠程倉庫的過程啦!

 

將遠程倉庫克隆到本地
下面我們來講一個新的玩法,就是先有遠程倉庫,后有本地倉庫,即把遠程倉庫“克?。╟lone)”到本地。
假設現在你的團隊其他成員已經在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”會直接合并,而不會等你確認,如果一旦合并錯了,還是比較麻煩的。寧可慢一點,也別重頭再來。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久久久一区探花 | 伊人3| 女人高潮特级毛片 | 精品久久久久久久久久 | 久久综合久久久 | 黄视频网站在线观看 | 亚洲欧美视频在线播放 | 中文字幕乱码亚洲无线三区 | 国产精品久久久久久久久久ktv | 久久爱成人 | 亚洲日韩中文字幕一区 | 在线一区视频 | av一级久久 | 欧美日韩国产综合视频 | av在线综合网 | 亚洲淫视频 | 羞涩网站| 蜜桃av网址 | 91丁香婷婷综合久久欧美 | 欧美精品在线视频 | 久久久久久亚洲精品中文字幕 | 久久精品这里热有精品 | 好吊色欧美一区二区三区四区 | 青草福利 | 在线观看91 | 日本一区二区三区四区 | 久久久91精品国产一区二区三区 | 久久久久久国产 | 亚洲淫视频 | 亚洲欧洲综合 | 欧美一区二区在线观看 | 久久精品国产亚卅av嘿嘿 | 亚洲精品自拍 | 久久精品亚洲一区二区 | 午夜私人影院 | 蜜桃视频一区二区三区 | 免费一级欧美在线观看视频 | 天堂va蜜桃一区二区三区漫画版 | 中文字幕乱码亚洲精品一区 | 99免费视频 | 国产亚洲一区二区三区在线观看 |