获取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删除一个远程仓库。