一.在Mac OS X上安装git
Xcode集成了git,不过默认没有安装,你需要运行Xcode,选择菜单
“Xcode”
->“Preferences”
,在弹出窗口中找到“Locations”
,选择“Command Line Tools”
,点“Install”
就可以完成安装了。
二. git常用命令
git通用操作流程* 工作区:本地电脑存放项目文件的地方,比如learnGitProject文件夹;
* 暂存区(Index/Stage):在使用git管理项目文件的时候,其本地的项目文件会多出一个.git的文件夹,将这个.git文件夹称之为版本库。其中.git文件夹中包含了两个部分,一个是暂存区(Index或者Stage),顾名思义就是暂时存放文件的地方,通常使用add命令将工作区的文件添加到暂存区里;
* 本地仓库:.git文件夹里还包括git自动创建的master分支,并且将HEAD指针指向master分支。使用commit命令可以将暂存区中的文件添加到本地仓库中;
* 远程仓库:不是在本地仓库中,项目代码在远程git服务器上,比如项目放在github上,就是一个远程仓库,通常使用clone命令将远程仓库拷贝到本地仓库中,开发后推送到远程仓库中即可;
-
git配置
列出当前配置:git config --list;
列出repository配置:git config --local --list;
列出全局配置:git config --global --list;
列出系统配置:git config --system --list;
配置用户信息:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
其他配置:
配置解决冲突时使用哪种差异分析工具,比如要使用
vimdiff:git config --global merge.tool vimdiff;
配置git命令输出为彩色的:git config --global color.ui auto;
配置git使用的文本编辑器:git config --global core.editor vi;
导入第三方库提醒
error: RPC failed; curl transfer closed with outstanding read data remaining
原因:curl的postBuffer默认值太小,需要在终端重新配置这个值
解决:将curl的postBuffer值配置为500M,具体值看项目需求,配置成功不会有提示,配置失败会有提示,
终端输入命令:
git config --global http.postBuffer 524288000
-
常用命令
* 新建仓库:
git init 将工作区中的项目文件使用git进行管理,即创建一个新的本地仓库:
git clone <url> mygit 将github项目clone到本地,被clone的项目将作为远程库。
克隆项目时如果想定义新的项目名,可以在clone命令后指定新的项目名mygit:
* 提交:
git add <file> 把文件修改添加到暂存区。(注意:添加到仓库,需要执行提交操作才能把文件放到仓库。)
git add . 提交工作区所有文件到暂存区:
git add [dir] 提交工作区中某个文件夹中所有文件到暂存区
区别
git add . 会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
git add -u 仅监控已经被add的文件(即tracked file),会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
git add -A 是上面两个功能的合集(git add --all的缩写)
git commit -m "commit_info" 把文件提交到仓库。
git commit -a -m "commit_info" 跳过add到暂存区的过程,将所有已经使用git管理过的文件暂存后一并提交
git commit --amend 撤销上一次提交
* 撤销:
git rm <file> 删除工作区文件,并且也从暂存区也删除对应文件的记录
git rm --cached <file> 从暂存区中删除文件,但是工作区依然还有该文件
git reset HAED <file> 把暂存区的修改撤销掉,重新放回工作区。
git reset --hard commit_id 回退到以前的版本。Git中用HEAD表示当前版本,上一版本为HEAD^,上上版本为HEAD^^,假如为往上100版本,则可表示为:HEAD~100。
git checkout -- file 丢弃工作区的修改。git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。如果想保留上一次的修改以备以后继续工作,可以使用stashing和分支来处理
* 重命名文件:
git mv [file-original] [file-renamed] 并将已改名文件提交到暂存区
* 查看信息:
git status 查询当前工作区所有文件的状态
git diff 查看修改的内容,比较工作区中当前文件和暂存区之间的差异,也就是修改之后还没有暂存的内容
git diff --cached 比较暂存区与上一版本的差异
git diff <file-name> --cached 指定文件在工作区和暂存区上差异比较
git log 查看提交历史
git log --pretty=oneline 查看排版的日志
git log -p -2 参数-p展开每次提交的内容差异,用-2显示最近的两次更新
git reflog:查看命令历史。可用来确定要回到未来的哪个版本。
-
远程操作
git remote add origin git@github.com:GitHubName/repo-name.git:关联一个GitHub远程库。通用结构:git remote add origin git@server-name:path/repo-name.git。
git push -u origin master:第一次向远程库推送master分支的所有内容。
git push origin master:向远程库推送最新修改。
git pull:抓取远程的新提交,保持本地和远程同步。
git pull origin master:把master分支的最新状态抓取到本地。
git remote -v:查看远程库信息。
git checkout -b branch-name origin/branch-name:在本地创建和远程分支对应的分支,名称最好一致。
git branch --set-upstream branch-name origin/branch-name:建立本地分支和远程分支的关联。
git push origin <tagname>:推送某个标签到远程。
git push origin --tags:一次性推送全部尚未推送到远程的本地标签。
git push origin:refs/tags/<tagname>:删除远程标签。(先删除本地的标签)
-
分支操作
git branch:查看所有分支
git branch <name>:创建分支
git checkout <neme>:切换分支
git checkout -b <name>:创建+切换分支
git merge <name>:合并某个分支都当前分支
git branch -d <name>:删除分支
git merge --no-ff -m "描述" <name>:记录分支情况的合并分支方法。
-
stash操作
git stash:储藏当前工作状态
git stash list:查看储藏的工作列表。
git stash apply:应用最新的储藏,恢复工作状态,但恢复后stash的内容并不删除。
git stash apply stash@{2} 如果想应用更早的储藏
git stash apply --index 重新应用被暂存的变更,需要加上--index参数
git stash drop 删除最近一次stash的内容
git stash drop stash{0} 删除指定一次stash的内容
git stash clear 清空所有的stash内容。
git stash pop 恢复工作状态并删除相关stash内容。
在某些情况下,你可能想应用储藏的修改,在进行了一些其他的修改后,又要取消之前所应用储藏的修改。Git没有提供类似于 stash unapply 的命令,但是可以通过取消该储藏的补丁达到同样的效果:git stash show -p stash@{0} | git apply -R;同样的,如果你沒有指定具体的某个储藏,Git 会选择最近的储藏:git stash show -p | git apply -R;
-
标签操作
git tag:查看所有标签。
git tag -l "" 使用特定的搜索模式列出符合条件的标签
git tag -a v1.4 -m "my version 1.4" 创建一个含附注类型的标签,需要加-a参数
git show v1.4 使用git show命令查看相应标签的版本信息,并连同显示打标签时的提交对象
git tag <name>:新建一个标签。
git tag -v 验证已签署的标签
git tag -a <tagname> -m "描述":新建标签并指定标签信息。
git tag -s <tagname> -m "描述":PGP签名标签。
git tag -d <tagname>:删除一个本地标签。
git push origin <tagname>:推送某个标签到远程。
git push origin --tags:一次性推送全部尚未推送到远程的本地标签。
git push origin :refs/tags/<tagname>:删除远程标签。(先删除本地的标签)
网友评论