Git學習筆記-基礎操作 開頭表示註釋

獲取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刪除一個遠程倉庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章