Git命令 未完結
一、在客戶機上生成公鑰和私鑰
$ ssh-keygen -t rsa -C "[email protected]"
生成的檔案存放在使用者目錄的.ssh目錄下,預設檔名為:id_rsa(私鑰),id_rsa.pub(公鑰)。
二、設定/修改名稱與郵箱:
$ git config --global user.name "yourname"
$ git config --global user.email " [email protected] "
三、檢視名稱與郵箱
$ git config user.name
$ git config user.email
四、克隆遠端庫到本地
首先在git bash中定位到建立本地庫的位置。
$ git clone git@GitHub上該倉庫的URL.git
五、假如將一個新檔案如test.txt放入Git倉庫
(1)用命令git add告訴Git將某個檔案新增到了倉庫
$ git add test.txt
(2)用命令git commit告訴Git將檔案提交到倉庫,可以一次提交多個檔案
$ git commit -m "add a new file"
-m後的內容是對git倉庫改變的描述。
執行完上述命令後,git bash中出現下面的內容:1個檔案被改變,插入了一行資料
[master f0a585d] add a new file
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
六、git status 檢視倉庫當前的狀態,結果如下:
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
(use "git push" to publish your local commits)
Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.txt.bak
test.txt.bak
nothing added to commit but untracked files present (use "git add" to track)
Untracked files所列的內容是沒有被Git追蹤的內容,如果只列出所有已經被git管理的且被修改但沒提交的檔案執行
$ git status -uno
七、執行git status如果顯示某個檔案被修改,並且想檢視修改的內容
$ git diff test.txt
結果如下:
diff --git a/test.txt b/test.txt
index c920a1f..9319b8f 100644
--- a/test.txt
+++ b/test.txt
@@ -2,3 +2,4 @@
test git
github
git
test
+include
結果解析:
- - -代表原始檔
+++代表目標檔案
由@@開頭,@@結尾的行表示在原始檔第2行開始的3行和目標檔案第2行開始的4行構成一個差異小結
-開頭的行,是隻出現在原始檔中的行
+開頭的行,是隻出現在目標檔案中的行
空格開頭的行,是原始檔和目標檔案中都出現的行
八、把修改後的檔案提交到倉庫
$ git add test.txt
$ git commit -m "test update"
九、刪除檔案
$ rm test.txt
執行上述命令後,檢視狀態,Git會指明哪個檔案被刪除了,此時工作區和版本庫就不一樣了。
$ git status
On branch master
Your branch is ahead of 'origin/master' by 9 commits.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: readme.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.txt.bak
test.txt.bak
no changes added to commit (use "git add" and/or "git commit -a")
兩種情況:
1.確實從版本庫中刪除該檔案,刪除之後並提交。
$ git rm test.txt
$ git commit -m "remove"
2.刪錯了,將誤刪的檔案恢復到最新版本
$ git checkout -- readme.txt
git checkout 是用版本庫中的版本替換工作區中的版本。
十、先有本地庫後有遠端庫時如何關聯遠端庫
首先在github官網上建立遠端倉庫,然後將本地倉庫和新建的遠端倉庫建立連線。
1.進入到本地倉庫後,執行一下命令則將本地倉庫和遠端倉庫連線起來。遠端庫的名字就是origin
$ git remote add origin [email protected].com:www-zhangyu/zhangyu_test.git
2.將本地庫的內容推送到遠端庫上
第一次推送:加上了 -u,git不但會將本地的master分支內容推送到遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或拉取時簡化命令。
$ git push -u origin master
之後用git push origin master
推送最新更改。
十一、建立分支
1、建立dev分支,並切換到該分支
$ git checkout -b dev
加上-b引數表示建立並切換,相當於兩條命令:
$ git branch dev
$ git checkout dev
2、檢視當前分支
$ git branch
會列出所有分支,當前分支前加“*”
3、我們可以在dev分支上正常提交而不影響其他分支,dev分支的工作完成後切換到master分支,把dev的工作成果合併到master分支。
$ git checkout master
$ git merge dev
git merge命令用於合併指定分支到當前分支
4、刪除分支
$ git branch -d dev
十二、解決衝突
如果兩個分支同時修改了同一個檔案併合併到master分支時會存在衝突,如下面程式碼顯示readme.txt檔案存在衝突,必須手動解決衝突後再提交。
$ git merge zhangyu
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
此時readme.txt檔案內容為
readme
<<<<<<< HEAD
branch master
=======
branch zhangyu
>>>>>>> zhangyu
git以<<<<<,=====,>>>>>標記處不同分支的內容,手動修改後儲存,重新提交
$ git add readme.txt
$ git commit -m "conflict fixed"
檢視分支合併圖:
$ git log --graph
十三、–no-ff方式的merge
強制禁用“Fast Forward”方式合併分支
$ git merge --no-ff -m "merge --no-ff" dev