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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335