Git
Git:分布式版本控制器
SVN:集中式版本控制器(必须联网)
git add . :将代码提交到暂存区
git commit -m '所提交代码的概述' :将代码提交到本地仓库
git push :将代码提交到远程仓库
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,配置用户信息
- 配置用户名:
git config --global user.name "your name" ; - 配置用户邮箱:
git config --global user.email "youremail@qq.com" ;
其他配置
- 配置解决冲突时使用哪种差异分析工具,比如要使用vimdiff:
git config --global merge.tool vimdiff ; - 配置git命令输出为彩色的:
git config --global color.ui auto ; - 配置git使用的文本编辑器:
git config --global core.editor vi ;
工作区上的操作命令
本地新建仓库
将工作区中的项目文件使用git进行管理,即创建一个新的本地仓库,在该文件夹内右键进入iterm2;输入命令:git init 。
- ??会生成一个隐藏文件夹
.git ,mac显示隐藏文件的快捷键:Command+Shift+.
克隆远程仓库到本地
查看所有文件的状态
git status
提交
- 提交工作区所有文件到暂存区:
git add . - 提交工作区中指定文件到暂存区:
git add <file1> <file2> ... ; - 提交工作区中某个文件夹中所有文件到暂存区:
git add [dir] ;
撤销
- 删除工作区文件,并且也从暂存区删除对应文件的记录:
git rm <file1> <file2> ; - 从暂存区中删除文件,但是工作区依然还有该文件:
git rm --cached <file> ; - 取消暂存区已经暂存的文件:
git reset HEAD <file>... ; - 撤销上一次对文件的操作:
git checkout --<file> 。要确定上一次对文件的修改不再需要,如果想保留上一次的修改以备以后继续工作,可以使用stashing和分支来处理; - 隐藏当前变更,以便能够切换分支:
git stash ; - 查看当前所有的储藏:
git stash list ; - 应用最新的储藏:
git stash apply ,如果想应用更早的储藏:git stash apply stash@{2} ;重新应用被暂存的变更,需要加上--index 参数:git stash apply --index ; - 使用apply命令只是应用储藏,而内容仍然还在栈上,需要移除指定的储藏:
git stash drop stash{0} ;如果使用pop命令不仅可以重新应用储藏,还可以立刻从堆栈中清除:git stash pop ; - 在某些情况下,你可能想应用储藏的修改,在进行了一些其他的修改后,又要取消之前所应用储藏的修改。Git没有提供类似于 stash unapply 的命令,但是可以通过取消该储藏的补丁达到同样的效果:
git stash show -p stash@{0} | git apply -R ;同样的,如果你沒有指定具体的某个储藏,Git 会选择最近的储藏:git stash show -p | git apply -R ;
更新文件
- 重命名文件,并将已改名文件提交到暂存区:
git mv [file-original] [file-renamed] ;
查新信息
- 查询当前工作区所有文件的状态:
git status ; - 比较工作区中当前文件和暂存区之间的差异,也就是修改之后还没有暂存的内容:git diff;指定文件在工作区和暂存区上差异比较:
git diff <file-name> ;
SSH配置
- 打开
iTerm2 。 - 使用
cd ~/.ssh 可以查看是否已配置SSH。 - 执行生成公钥和私钥的命令
ssh-keygen -t rsa 并按回车3下,会在一个文件夹里面生成一个私钥id_rsa 和一个公钥id_rsa.pub 。
- (为什么按三下,是因为有提示你是否需要设置密码,如果设置了每次使用 Git 都会用到密码,一般都是直接不写为空,直接回车就好了)。
.ssh 如果不做特殊处理的话,一般是在/Users/主机用户名/.ssh 目录下。如果看不到.ssh文件,可以使用shift+cmd+. 指令查看隐藏文件夹即可,这是存放秘钥的文件,打开这个文件会看到id_rsa和id_rsa.pub。id_rsa是私钥文件,id_rsa.pub是公钥文件。
- 执行查看公钥的命令
cat ~/.ssh/id_rsa.pub 。
忽略文件.gitignore
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。如下例:
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录下所有扩展名为 txt 的文件
doc/**/*.txt
Git基本操作
git add xxx
git add .
git commit
git commit -m "you message"
git commit -am
git commit --amend
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
与 git pull 不同的是 git fetch 操作仅仅只会拉取远程的更改,不会自动进行 merge 操作。对你当前的代码没有影响
git fetch <远程主机名> <分支名>
git fetch --all
git branch <branch-name>
git branch
git branch -r
git branch -a
git branch -D <branch-nane>
git branch -m <old-branch-name> <new-branch-name>
Linux命令
cd :改变目录
cd .. :返回上级目录
touch :新建文件
ls/ll :列出当前目录所有文件(ll列出的更为详细)
pwd :显示当前目录所在路径
mkdir :新建文件夹
rm -r :删除文件夹
mv :移动文件
reset :初始化终端
clear :清屏
history :查看历史命令
exit :退出
# :注释
参考文献:
git基本操作,一篇文章就够了!
我在工作中是如何使用 git 的
【狂神说Java】Git最新教程通俗易懂
Git实战讲解,一学就废!
|