Git存储的是文件快照,SVN基于差异存储
Ubuntu或Debian安装Git命令:sudo apt-get install git
其他Linux版本源代码安装命令:
./config
make
sudo make install
安装程序下载地址:msysgit
安装完成后,设置全局用户名和邮件:
git config --global user.name "your name"
git config --global user.email "xxxx@xxx.com"
创建当前机器的SSH Key,生成过程中让输入密码时可全部回车,避免后续与远程仓库打交道输密码
ssh-keygen -t rsa -C "xxxxx@xx.xx" # 邮箱
配置:将机器的SSH Key公钥添加到Github/Gitlab等(id_rsa.pub文件内容)
当不清楚某条命令的具体用法和选项时,可在命令后加--help
查看手册,如:
git log --help
仓库(repository),可以理解为一个目录,Git管理目录里所有文件
将目录变成Git管理的仓库,在目录下执行git init
将工作区文件添加到缓冲区git add file_name1 file_name2
将缓冲区文件添加到仓库
git commit -m "first commit" # -m 是本次提交说明,"first commit"是说明内容
git commit # 不加-m会自动打开vim令输入说明内容
git status # 查看当前状态
git diff [file] # 查看工作区修改(-代表删掉的内容,+代表新加入的内容),file表示是否查看指定文件
git log # 显示最近到最远的提交日志
git reset --hard commit_id # 版本回退(把HEAD指向指定commit)
git reflog # 查看操作历史,可用来回退操作
git log -g # 同上
删除分支
git branch -d dev # 删除dev分支
git branch -D dev # 强行删除dev分支
创建分支,可指定从某个commit切出新分支
git checkout -b dev [commit] # commit不写则默认从当前HEAD创建新分支dev
合并xx分支到当前分支
git merge xx # Fast forward模式
git merge --no-ff dev -m "your comment" # 禁用fast forward模式,merge时生成新的commit
修改后未add(未添加到暂存区)需要撤销时;修改后add(未commit)再次修改文件,要撤销第二次修改时
git checkout -- file # 撤销工作区修改
修改后add(未commit),需要撤销修改
git reset HEAD file # 将暂存区修改删除,此时工作区修改还未撤销
git checkout -- file # 撤销工作区修改
修改后add并commit,需要撤销修改
git reset --hard HEAD^ # HEAD^代表上一个版本,HEAD^^代表上上个版本
从仓库里删除,并不再追踪
git rm file # 从git追踪中一并删除
git commit # 最好带上-m说明
误删(rm file),但版本库里还有,需要恢复
git checkout -- file # 本质上是对修改的撤销
误删(git rm并且commit)就用git reset恢复
clone仓库
git clone git@host:user/path/xxx.git # host指主机地址,下载整个仓库
git clone -b 分支名 仓库地址 # 下载指定分支
git remote add origin git@server-name:path/repo.git # 关联repo仓库,并命名为origin
#例子,xxx是github账户名,gitname是远程仓库的名字
git remote add origin git@github.com:xxx/gitname.git
推送(git push),不带任何参数则默认只推送当前分支
git push -u origin master # -u 将本地master分支同远程master分支关联起来
git push origin dev # 将本地dev分支推送到远程关联分支,如远程分支不存在则被新建,此处忽略了远程分支名
git push [-f] # 表示强制推送,用本地覆盖远程
TODO
用处:不追踪指定文件如编译产生的二进制文件,避免手误加入导致仓库庞大
TODO
原文:https://www.cnblogs.com/gizing/p/12333477.html