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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。