Pro Git
2018-03-04 本文已影响9人
NapoleonY
Git基础
取得项目的 Git 仓库
-
git init
在现有项目的目录中初始化新仓库 -
git add *.c
告诉Git开始跟踪所有的.c文件 -
git clone url
克隆某个项目的Git仓库 -
git clone url myRepo
自定义新建项目目录名称为myRepo
备注:git支持git://
协议和http(s)://
或者user@server:/path.git
表示的SSH传输协议
记录每次更新到仓库
-
git status
检查当前文件状态 -
git add fileA
开始跟踪文件fileA
"该命令潜台词是把目标文件框照放入暂存区";
备注:git add
后可以是文件名或者目录 -
.gitignore
文件内为要忽略的文件- 所有空行或者以注释符号
#
开头的行都会被 Git 忽略。 - 可以使用标准的 glob 模式匹配
- 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
# 此为注释 – 将被 Git 忽略 # 忽略所有 .a 结尾的文件 *.a # 但 lib.a 除外 !lib.a # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO /TODO # 忽略 build/ 目录下的所有文件 build/ # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt doc/*.txt # ignore all .txt files in the doc/ directory doc/**/*.txt
- 所有空行或者以注释符号
-
git diff
比较工作目录当前文件与暂存区域快照之间的差异 -
git diff --cached
或git diff --staged
比较已暂存和上次提交时快照之间的差异 -
git commit
提交更新 -
git commit -a
跳过git add
命令,将所有跟踪过的文件暂存起来一并提交 -
git rm fileA
删除工作目录中文件fileA
,删除暂存区文件fileA
,提交后,文件fileA
不再纳入版本管理 -
git rm -f fileB
强制删除文件fileB
如果fileB
在删除前被修改并提交到了暂存区,需要使用该命令强制删除 -
git rm --cached fileC
移除对文件fileC
的跟踪,即从暂存区删除文件fileC
,工作目录中不删除 -
git rm \*~
删除当前目录及子目录下所有~
结尾的文件 -
git rm log/\*.log
删除log目录下所有.log
结尾的文件 -
git mv fileF fileG
将文件fileF
重命名为fileG
,相当于如下三个操作mv fileF fileG
,git rm fileF
,git add fileG
查看提交历史
Git分支
何谓分支
-
git branch testing
新建testing
分支 -
git checkout testing
切换到testing
分支
分支的新建与合并
-
git checkout -b iss01
新建并切换到分支iss01
-
git branch iss01
新建分支iss01
-
git checkout iss01
切换到分支iss01
-
git merge iss01
将分支iss01
合并到当前分支 - 解决合并分支时出现的冲突解决后,运行
git add
和git commit
命令提交 -
git branch -d iss01
将分支iss01
删除
备注:第1条指令相当于第2.3条指令的效果
分支的管理
-
git branch
给出当前所有分支的清单 -
git branch -v
查看各个分支最后一个提交对象的信息 -
git branch --merged
查看哪些分支已被并入当前分支 -
git branch --no-merged
查看尚未合并的分支
远程分支
-
git fetch origin
同步远程服务器上的数据到本地 -
git push origin serverfix
将本地的serverfix
分支推送到远程仓库origin
中 -
git push origin serverfix:awesomebranch
将本地分支serverfix
推送到远程仓库,命名为awesomebranch
-
git checkout -b serverfix origin/serverfix
新建本地分支serverfix
,内容同远程分支origin/serverfix
一致 -
git push origin :serverfix
将远程库中的serverfix
分支删掉