檢視git分支目錄的工具_輕量級辦公平臺專案記錄(1):git的使用
技術標籤:檢視git分支目錄的工具
為什麼在專案的開篇要介紹下git的使用呢?俗話說:“工欲善其事,必先利其器”,git工具就是專案開發的必備利器,尤其是在多人協作開發環境中。
使用git工具可實現分散式的版本控制,可在服務端和本地建立一個版本庫。
參考資料:http://www.runoob.com/git/git-tutorial.html
1、在windows上安裝git工具
安裝包下載地址:https://gitforwindows.org/
使用安裝包完成安裝後,git工具會自動安裝git bash 工具(開啟開始選單,找到"Git"->"Git Bash"),會彈出git命令視窗,在命令視窗下可以進行git操作,同時滑鼠右鍵也可以快速開啟git bash
2、基本配置
配置個人使用者名稱和電子郵件
$ git config --global user.name "RobbieHan"
$ git confit --global user.email [email protected]
檢視配置資訊
$ git config --list
3、Git建立倉庫
使用當前目錄作為倉庫
$ git init
使用指定目錄作為Git倉庫
$ git init myproject
4、Git基本操作
git clone:
使用git clone拷貝一個Git倉庫到本地,例如從github上克隆git-demo專案
$ git clone https://github.com/RobbieHan/git-demo.git
# ssh方式 git clone [email protected]:RobbieHan/git-demo.git
克隆完成後,會在當前目錄下生成一個git-demo的專案目錄,接下來我們就可以檢視git-demo專案檔案,修改程式碼了
git add :
使用git add 命令將檔案新增到快取,我們在git-demo專案中建立一個test.py檔案,然後使用git add 將檔案新增到快取
$ touch test.py $ ls README.md test.py $ git status -s ?? test.py
其中git status命令是用於檢視專案當前狀態,接下來使用git add命令來新增檔案:
$ git add test.py
$ git status -s
A test.py
這時候在使用git status命令可以看到 test.py檔案已經成功新增到快取。
git diff:
檢視尚未快取的改動(已經修改變更尚未執行git add的檔案):git diff
$ echo "# This is test.py" > test.py
$ git diff
diff --git a/test.py b/test.py
index e69de29..0c029d2 100644
--- a/test.py
+++ b/test.py
@@ -0,0 +1 @@
從上面輸出結果可以看出git diff 會一行行顯示還未提交到快取的具體變動內容。
檢視已快取成功的改變:git diff --cached
$ git add .
$ git diff --cached
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..0c029d2
--- /dev/null
+++ b/test.py
@@ -0,0 +1 @@
+# This is test.py
上面使用了 git add . 是提交所有專案檔案到快取,執行git diff --cached 可以看到已經快取成功的改變,包括新建 test.py檔案 ,將內容寫入 test.py
git commit:
使用git commit 將存入快取的快照新增到倉庫中
$ git commit -m '這是一條描述資訊:將快取快照新增到倉庫'
The file will have its original line endings in your working directory.
1 file changed, 1 insertion(+)
create mode 100644 test.py
$ git status
nothing to commit, working directory clean
將快取中的快照提交到倉庫後,再來執行git status 可以看到已經沒有需要提交的改動資訊了。
git checkout -- file:
使用git checkout -- file 用來撤銷修改,將檔案恢復到上一個版本,比如將一些無用或錯誤的資料寫到專案檔案了,這時可以使用git checkout來撤銷修改
$ echo "這是一條錯誤的資料" > test.py
cat test.py
$ cat test.py
這是一條錯誤的資料
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
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: test.py
no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout -- test.py
$ cat test.py
# This is test.py
可以看到使用 git checkout -- file 命令已經將 test.py恢復到之前版本
上面的操作是我們用來恢復工作區的錯誤操作,如果已經將工作區的錯誤操作通過 git add 新增到了快取區怎麼辦呢?可以使用 git reset HEAD file 來撤銷快取區的修改。
5、git分支管理
使用git分支可以讓你從開發主線上分離出來,然後在不影響主線的同時進行開發工作。
建立分支:
$ git checkout -b dev # -b 表示建立並切換到該分支
Switched to a new branch 'dev'
檢視分支:
$ git branch
* dev # 當前分支前面會顯示一個 * 號
master
接下來我們對專案檔案的修改都只會在dev分支上生效,例如給test.py檔案新增一行內容
$ echo "dev test" >> test.py
$ git add test.py
$ git commit -m "branch dev test"
1 file changed, 1 insertion(+), 1 deletion(-)
以上的修改操作不會影響到master分支的檔案,切換到master分支檢視test.py
$ git checkout master
Switched to branch 'master'
$ cat test.py
# This is test.py
當然,我們在dev 分支完成的開發工作可以合併到master分支:
$ git merge dev
Updating 459d678..a4a069b
Fast-forward
test.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
合併分之後master分支的專案內容就和dev一樣了。
分支管理的命令小結:
建立分支:git branch <name>
檢視分支:git branch
切換分支: git checkout <name>
合併分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
合併衝突:
切換到dev分支,在test.py裡面追加一行內容:"This is branch dev"
$ echo "This is branch dev" >> test.py
$ git add test.py
$ git commit -m "dev"
切換到master分支, 在test.py裡面追加一行內容:"This is branch master"
$ git checkout master
$ echo "This is branch master" >> test.py
$ git commit -am test.py
現在 dev 和master兩個分支都對檔案test.py做了改動,結下了合併分支就是出現衝突:
$ git merge devAuto-merging test.py
CONFLICT (content): Merge conflict in test.py
Automatic merge failed; fix conflicts and then commit the result.
使用git status檢視存在衝突的檔案:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: test.py
no changes added to commit (use "git add" and/or "git commit -a")
接下來我們需要手動去修改衝突內容:
$ vim test.py
dev test
<<<<<<< HEAD
This is branch master
=======
This is branch dev
>>>>>>> dev
可以看到裡面test.py裡面已經標記了兩個分支修改的內容,手動修改下衝突的內容,儲存檔案。
$ git add test.py
$ git commit -m "master"
衝突合併完成。
6、Git標籤:
在做程式開發時,經常會發布維護多個版本,這時就可以用到標籤(tag),需要用到某個版本時,根據標籤就可以獲取對應的版本。
給當前分支打上一個標籤:
$ git tag v1.0
v1.0
如果在程式碼提交到git倉庫的時候忘記打標籤了,可以追加標籤
$ git log --oneline --decorate --graph
* 97b7808 (HEAD -> master, tag: v1.0) Merge branch 'dev'
|
| * 3bbe270 (dev) dev
* | 0bad6a6 test.py
|/
* a4a069b branch dev test
* 459d678 這是一條描描述資訊‘
* a7968a0 (origin/master, origin/HEAD) git demo
$ git tag v0.1 a7968a0 # 通過日誌找到commit id 然後通過 commit id來追加標籤
使用指定的tag來生成分支
git checkout -b <branch_name> <tag_name>
git checkout -B <branch_name> <tag_name> # 如果分支已經存在使用 -B 可以強制建立分支,覆蓋原來的分支
git標籤命令:
檢視標籤:git tag
檢視標籤詳細資訊:git show <tagname>
指定標籤資訊:git tag -a < tagname> -m <tag_desc>
刪除一個標籤:git tag -d <tagname>
7、使用遠端倉庫
生成金鑰檔案:
$ ssh-keygen -t rsa -C "[email protected]"
上面郵箱換成github註冊郵箱,然後一直回車,系統會在使用者目錄下生成.ssh資料夾,開啟id_rsa.pub,複製裡面的key。
vim ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCx984lhTT0nlW3QWTZBiO4WT3BtdOq7OGfgbWlT2NhcW0Uqj7UkMexG4dseUxz4L2TMDjTJIhRdMX+n5Qq1qQwsoQoA3AXg1TxEEZZQ9JJNcanQG58X09235XsIYwAGZbnoixjNAMbV1aa+oLafKvL3InQav+P0Xj38tWVuuJqjtt+QQCiEx8W828N6etR/dcoDw4Isa1k9Hntn4qoY+GqRnkcyBY4aIXMcrakghFcDVH5XlPBndXXRLm06VGtIgpqX82+2gXo0Pp4+p0LMTRnDVxE1fjJy2FwnQf4LkNgeDr7o+DMbTEpPgSKogI9kFpwnbCZjjab [email protected]
登陸github網站進入-settings選擇 SSH and GPG keys ,然後選擇 New SSH key, 填寫 title, 在key選項裡面填入剛剛複製的key, 儲存新增。
本地通過git bash 測試金鑰連結是否成功
$ ssh -T [email protected]
Hi RobbieHan! You've successfully authenticated, but GitHub does not provide shell access.
在github上新建一個倉庫,倉庫名為:gitdemo, 將本地倉庫提交到github
$ git remote add origin [email protected]:RobbieHan/git-demo.git
$ git push -u origin master
上傳分支到github
$ git push -u origin dev
上傳標籤到github
$ git push origin v1.0 # 上傳一個tag
$ git push origin --tags # 上傳全部tag
我們從github上克隆了一個專案,如果這個專案更新了,可以使用兩條命令來獲取更新
$ git fetch origin master # 從遠端倉庫下載新的分支資料
$ git merge # 合併到本地當前分支
克隆某個分支到本地:git clone -b <branch name> [remote repository address]
檢視當前遠端庫:git remote -v
刪除遠端倉庫: git remote rm [別名]
更多git使用請參考網路資料
-----------------------------------------------------------------------------------------------
知乎專欄:Django 學習小組
知乎專欄:SandBox
更多實戰文件可關注知識星球:https://t.zsxq.com/a6IqBMr(微信中開啟連結)
輕量級辦公管理系統專案開源地址:RobbieHan/gistandard