Git是分布式版本控制系统
安装Git
sudo apt-get install git
配置用户名和邮箱
git config --global user.name "Your Name"
git config --global use.email "email@example.com"
配置代理
git config --global http.proxy 127.0.0.1:39439
git config --global https.proxy 127.0.0.1:39439
git config --global http.sslverify false
export http_proxy=127.0.0.1:39439
export https_proxy=127.0.0.1:39439
取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
unset http_proxy
unset https_proxy
创建仓库
mkdir test
cd test
git init
添加文件到版本库当前分支(分以下两步)
把文件添加到暂存区
git add README.md
把文件提交到版本库当前分支
git commit -m "first commit"
查看工作区状态
git status
git status -s
查看修改内容
查看工作区与暂存区的修改内容
git diff
查看工作区与版本库当前分支的修改内容
git diff HEAD
查看暂存区与版本库当前分支的修改内容
git diff --cached
查看历史提交记录
git log
git reflog
git log --graph --pretty=oneline --abbrev-commit
回退版本
回退到commit_id对应的版本
git reset --hard commit_id
回退到HEAD指向的当前版本
git reset --hard HEAD
丢弃工作区的修改
git checkout -- filename.txt
注意这里有两个-,如果没有--,就变成了切换分支的命令
将暂存区的修改撤销掉,放回到工作区
git reset HEAD filename.txt
删除文件
git rm filename.txt
关联远程仓库
git remote add origin git@server-name:path/repo-name.git
推送master内容
第一次推送时需要使用下面命令
git push -u origin master
以后提交使用下面命令
git push origin master
克隆仓库
git clone https://server-name:path/repo-name.git
查看分支
git branch
创建分支
git branch <name>
切换分支
git checkout <name>
创建+切换分支
git checkout -b <name>
合并某分支到当前分支
git merge <name>
删除分支
git branch -d <name>
合并分支
git merge --no-ff -m "merge with no-ff" dev
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
git stash list
git stash apply stash@{0}
git stash pop
当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,git stash list’ 命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清
开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过
git branch -D <name>强行删除。
查看远程库信息
git remote -v;
从本地推送分支
git push origin branch-name 如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name 本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支
git pull 如果有冲突,要先处理冲突
发布一个版本时,我们通常先在版本库中打一个标签(tag)
新建一个标签
git tag <name> 默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..." 可以指定标签信息;
git tag -s <tagname> -m "blablabla..." 可以用PGP签名标签;
查看所有标签
git tag
推送一个本地标签
git push origin <tagname>
推送全部未推送过的本地标签
git push origin --tags
可以删除一个本地标签
git tag -d <tagname>
删除一个远程标签
git push origin :refs/tags/<tagname>
本地创建分支,然后推送到远程
git checkout -b feature-branch //创建并切换到分支feature-branch
git push origin feature-branch:feature-branch //推送本地的feature-branch(冒号前边的)分支到远程feature-branch(冒号后面的)分支