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分支删掉