Git 總結系列如下(感興趣的賞個臉看一下唄):
Git基礎–常用命令
Git進階–版本控制管理
Git進階–遠程倉庫,在Github上提交代碼
1. 安裝git
Linux控制檯輸入 git
如果沒有安裝則會有以下提示,輸入sudo apt-get install git
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
Windows 系統前往Git官網
下載,或自行搜索下載。下載完成後默認安裝即可,安裝完成後,打開命令行(windows 下在任意地方右鍵Git Bash Here 也可以),輸入git
,出現以下命令提示即爲安裝成功($ 符號爲Git Bash 自帶的符號)
$ git
usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
安裝完成後,先全局(--global
)設置一下用戶名和用戶郵箱,當然也可以在每個倉庫內設置,將用戶名和郵箱替換爲你自己的就行了。
$ git config --global user.name yugengw
$ git config --global user.email yugengw@gmail.com
2. 創建代碼倉庫
可以在任意地方設置代碼倉庫,作爲學習,你可以新建一個文件夾,隨意創建幾個文本文件或複製一些學習資料。首先使用cd
命令定位到你想要新建倉庫的文件夾(windows 可以使用文件管理器,到某個文件夾,然後右鍵Git Bash Here),
比如我現在想要將E盤的learngit 作爲git倉庫
$ cd e:
$ mkdir learngit
$ cd learngit
使用git init
將次文件夾初始化爲一個git 倉庫,並創建了master分支。
$ git init
Initialized empty Git repository in E:/learngit/.git/
這樣就會生成一個.git
的隱藏文件夾,就是由這個文件夾來管理倉庫。
3.常用命令
幾個概念 :
工作區:我們正在操作的地方,任何修改都是在工作區
暫存區:當我們修改了文件後,並執行git add
命令就將工作區的修改放進暫存區,使工作區與暫存區一致。暫存區可以防止誤提交,或將一些不想提交的修改隔絕在工作區裏。
放進暫存區之後git commit
就可以將暫存區與上一次git commit
不同的東西提交。
1.git status
最經常用的命令,用來查看倉庫狀態,工作區的修改,暫存區的修改等,並做一些命令提示。
2.git add <file>
將工作區的修改放進暫存區 .
代表所有文件,使用相對路徑/文件名.擴展名
添加某一文件。(對應的有一個命令git rm <file>
用來從暫存區刪除文件。當你在工作區刪除一個文件後,git rm
到暫存區 相當於 git add
到暫存區。不過前者對應rm操作,後者對應modify操作。結果是一樣的 )
3.git commit
將暫存區修改提交
4.git log
查看此分支的每次commit,“532acfca…”這一串是每次commit 的id。
git log --pretty=oneline --abbrev-commit
--pretty=oneline
減少爲只剩commit 那一行
--abbrev-commit
將commit id 長度只顯示一部分
5.git diff
查看文件修改
直接使用git diff
比較工作區與暫存區文件差異.
首先修改一下文件,然後輸入git diff
紅色的部分前面有個 - 代表刪除東西,綠色的部分前面有個 + 代表增加的東西。
git diff
具體命令:
git diff
比較工作區與暫存區文件差異
git diff <$id1> <$id2>
比較兩次提交之間的差異
git diff <branch1>..<branch2>
在兩個分支之間比較
git diff --staged
比較暫存區和版本庫差異。
6. git branch
新建分支,master分支理論上是不直接修改的,新功能的開發都是在新建分支上進行的,只有功能開發完成並測試後可以發佈了才合併到master分支。
git branch a
新建分支a
git branch -d a
新分支合併到master分支後,已經沒用了,就可以刪除了。
git branch -D a
新分支若創建錯了,或放棄了新功能的開發。想直接刪除,使用上一個命令會提示分支尚未被合併,使用-D
強制刪除,記住不要刪錯了哦。
7. git checkout
切換分支
git checkout a
切換到a分支
git checkout -b a
這個命令的意思就是新建一個a分支,並且自動切換到a分支。(新建分支並切換)
8. 合併分支
新分支開發完畢後,就需要提交,然後進行合併,需要先把分支切換回主分支(這裏就不截圖了,參照上面),然後在主分支執行合併命令。
合併分支的命令有兩個 git merge
和git rebase
合併a 分支兩種操作
git checkout master
git merge a
git checkout master
git rebase a
merge 直接合並,合併後是分叉的,但有衝突時只需要解決一次。(圖片來自 git merge 和 git rebase 小結)
rebase 合併後提交記錄爲一條線,而且會把你自己分支的commit頂到最前面。但可能得多次解決衝突。
git rebase
兩種合併到底用哪種要視團隊而定。
不過從知乎上的討論
來看,可以有一個簡單的理解:
個人分支使用 rebase,
公共分支或者說多人協作的分支使用 merge ,
因爲rebase會把當前分支的commit,調整到最前端,導致commit順序混亂。
其他也有不同的理解,詳細的可以看上面的知乎連接。
9. git tag <name>
打標籤,可以爲版本打上標籤, 以確定了打標籤時刻的軟件版本。
git tag v1.0
打上v1.0 標籤。
使用git log
可以看到標籤已經打上去了
如果要爲歷史commit 打標籤,只需要在後面加上要打標籤 的commit id : git tag <name> <id>
eg:git tag v2.0 532acfca
git tag
查看所有標籤
git show <name>
查看標籤信息
git tag -d <name>
刪除標籤