獲取Git倉庫
你可以使用git init新建Git倉庫對現有項目進行管理,或者使用git clone克隆一個已存在的Git倉庫,克隆時可以自定義本地倉庫的名字。
git init
git add *.c
$ git clone https://github.com/xiongya000/AndroidSignTool.git apktool
Cloning into 'apktool'...
remote: Enumerating objects: 17, done.
remote: Total 17 (delta 0), reused 0 (delta 0), pack-reused 17
Unpacking objects: 100% (17/17), done.
檢查文件狀態
要查看文件處於什麼狀態,可以用git status,在項目根目錄添加1.txt後運行該命令會發現一個未跟蹤文件。
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
1.txt
nothing added to commit but untracked files present (use "git add" to track)
提交文件到暫存區
使用git add提交修改,刪除,新建的文件到暫存區,如果運行了git add後又對文件做了修改,需要再次運行git add。如果git add的參數是目錄,會遞歸地將該目錄下的所有文件提交到暫存區。
$ git add 1.txt
$ git add *.md
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: 1.txt
modified: README.md
git add還有其它用法,例如:
# 添加所有修改,刪除或新建的文件到暫存區
git add .
git add -A
# 添加所有修改,刪除的文件到暫存區
git add -u
# 添加所有修改,刪除或新建的文件到暫存區,除了.開頭的文件
git add *
# 添加所有以md結尾的文件到暫存區
git add *.md
使用git rm刪除文件並同步到暫存區,如果刪除之前修改過並且已經放到暫存區域的話,則必須要用強制刪除選項 -f,如果想保留文件,但是不繼續追蹤該文件,使用--cached選項。git mv移動文件並同步到暫存區。
git rm 1.txt
git mv old.txt new.txt
忽略文件
有些文件無需使用Git管理,也不希望它們出現在未跟蹤文件列表,例如日誌文件和臨時文件,這種情況下,我們可以創建一個名爲.gitignore 的文件列出要忽略的文件,語法如下:
-
開頭表示註釋
- []表示包含單個字符的匹配列表
- ?表示通配單個字符
- *表示通配多個字符
- **表示任意匹配中間目錄
- !表示不忽略
# 忽略所有.a文件
*.a
# 不忽略lib.a
!lib.a
# 忽略當前目錄下的TODO文件
/TODO
# 忽略所有build目錄下的文件
build/
# 忽略doc目錄下的.txt文件
doc/*.txt
# 忽略doc目錄下的.pdf文件(遞歸子目錄)
doc/**/*.pdf
查看文件的修改
使用git diff查看現有文件和暫存區文件的不同之處,使用git diff --cached查看暫存區文件和倉庫的區別。
$ git diff
diff --git a/README.md b/README.md
index 8873d4a..74b7c8b 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,2 @@
# AndroidSignTool
-Android V2 signature tool
>Android加固工具都自帶重簽名功能,但是有的只加了V1簽名,ApkSign.py可以批量給apk加v2簽名。
$ git diff --cached
diff --git a/1.txt b/1.txt
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/1.txt
@@ -0,0 +1 @@
+1
\ No newline at end of file
取消暫存的文件
使用git reset HEAD取消暫存的文件。
git reset HEAD 1.txt
恢復剛剛刪除或修改的文件
使用git checkout --恢復文件到上次提交時的樣子。
git checkout -- README.md
提交到倉庫
使用git commit提交暫存區到倉庫,這個時候會出現一個文本編輯器讓你輸入提交說明,你也可以使用-m選項輸入提交說明。
git commit -m 1.修改了xxxx
如果你提交後又修改了一些文件並添加到暫存區,想把這些文件合併到上一次提交,可以使用--amend選項,如果不想修改上次的提交信息可以使用--amend --no-edit選項。
git commit --amend
git commit --amend --no-edit
在提交的時候,給git commit 加上-a 選項,Git會自動把所有已跟蹤過的文件暫存起來一併提交,從而跳過 git add 步驟。
查看提交歷史
使用git log查看提交歷史,默認不用任何參數的話,git log會按提交時間列出所有的更新,最近的更新排在最上面。使用-n選項顯示最近的n條提交,使用--grep選項顯示含指定關鍵字的提交。
git log
git log -5
git log --grep init
查看與添加遠程倉庫
使用git remote列出所有已配置的遠程倉庫的簡寫,使用-v選項顯示其對應的URL,如果你使用clone克隆了一個倉庫,命令會自動將其添加爲遠程倉庫並默認以origin爲簡寫。
$ git remote -v
origin https://github.com/xiongya000/AndroidSignTool.git (fetch)
origin https://github.com/xiongya000/AndroidSignTool.git (push)
使用git remote show [remote-name]查看遠程倉庫的更多信息,例如所有分支。
$ git remote show origin
* remote origin
Fetch URL: https://github.com/xiongya000/AndroidSignTool.git
Push URL: https://github.com/xiongya000/AndroidSignTool.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
使用 git remote add <shortname> <url> 添加一個遠程倉庫。
git remote add xxx https://github.com/xxxxx
從遠程倉庫拉取數據
使用git fetch [remote-name] [branch-name]從遠程倉庫拉取數據,而git pull不僅會從遠程倉庫拉取數據,還會自動嘗試合併到當前所在的分支。
# git pull命令其實是如下兩個命令的簡寫
git fetch origin master
git merge origin/master
推送數據到遠程倉庫
使用git push [remote-name] [branch-name]推送數據到遠程倉庫。
git push origin master
重命名和刪除遠程倉庫
使用git remote rename oldname newname修改遠程倉庫的簡寫,使用git remote rm remotename刪除一個遠程倉庫。