参考教程:廖雪峰git教程
1. 创建和使用仓库:
打开Git Bash,创建一个空目录,使用git init把目录变成仓库;
在该目录下新建一个txt文件,把文件放到git仓库:两步(把文件修改添加到暂存区 $git add try.txt ; 提交修改,把暂存区的所有文件提交到当前分支 $git commit -m "说明message")
2. 文件修改:
$git status 查看仓库当前状态,哪个文件被修改过;
$git diff try.txt 查看文件哪里被修改了;之后还可以通过上述两步提交。
$git diff HEAD -- try.txt 查看工作区(没有add和提交过)中文件和版本库中最新版本的区别(commit提交过)
3. 查看历史纪录:$git log 由近到远显示commit id author time 和曾经输入的"说明message"
简化显示:$git log --pretty=oneline
4. 版本回退:$git reset --hard HEAD^ HEAD表示最新版本,一个^表示上一个版本,两个^^表示上上个版本,往上100个版本HEAD~100
想要再回来之前的版本,需要保证命令行没有关闭,找到之前最新版本的id,$git reset --hard *****(id可以只写前几位,git会自动寻找)
查看文件内容:$cat try.txt 修改文件内容:vi try.txt (:wq保存并退出)
记录每一次命令:$git reflog 从而可以在再次打开命令行时也记得某个版本的id
5. 撤销修改:git checkout -- try.txt 将在工作区中所作的修改撤销,回到最新一次add或commit的文件
撤销暂存区的修改(已经add过了):$git reset HEAD try.txt 把暂存区的修改撤销掉,重新放回工作区,需要再次在工作区撤销修改
6.文件删除:工作区删除,在文件夹中删除或者rm test.txt
继续在版本库中删除:git rm test.txt 并且git commit -m "说明";
误删,从版本库中还原到工作区中:git checkout -- try.txt //和撤销在工作区中的修改一样,都是把版本库中的文件替换工作区中的文件
7.远程库:关联:$git remote add origin(远程库的名字) git@github.com: tttabc**(账户名)/newgit(本地目录名字).git
第一次推送所有内容:git push -u origin master
一般推送:git push origin master(origin:远程仓库的名称;master:本地推送的分支的名称)
从远程库克隆:$git clone git@github.com:ttabc**/gitskills.git(使用SSH协议)
或者$git clone https://github.com/tttabc**/gitskills.git
抓取分支:git checkout -b dev origin/dev(远程origin的dev分支)
8. 创建分支:git branch dev(新分支的目录名)
切换分支:git checkout dev
创建分支并切换:git checkout -b dev
查看分支:git branch
合并某分支到当前分支:git merge dev(dev分支) //即使是同一个文件在某分支上修改并提交后,切换分支后仍看不到修改后的,除非进行合并
no-ff合并:git merge --no-ff -m "这是一次commit需要说明" 不使用fast-forward模式,可以从分支历史上看到分支信息;使用fast-forward模式,就看不出来曾经做过合并
删除分支:git branch -d dev(分支名字) //合并后可以删除分支
合并前强行删除分支:git branch -D dev
9. 分支冲突:分别在两条分支上修改同一个文件并提交,合并分支时会发生冲突(会报告发生冲突的文件,文件的内容会改变)。修改方法是:手动修改该文件,之后再add commit提交。
查看分支的合并情况:git log --graph --pretty=oneline --abbrev-commit
10. Bug分支:保存当前工作现场:$git stash
查看保存的多个工作现场:git stash list
回复工作现场:①git stash apply:不删除stash内容,需要用git stash drop来删除。多个工作现场时:git stash apply stash@{0}(id)
②git stash pop:恢复的同时也把stash删除了
11. 多人协作:推送自己的修改 $git push origin dev
如果远程分支比本地的更新,需要git pull把最新提交抓下来,然后手动解决冲突,再提交,再push.
git pull失败,需要设置dev和origin/dev的链接。
12. 标签:新建标签:git tag name(标签名):默认打在最新的commit上
一般方法:git tag name commit-id(想要打标签的commit的id号)
git tag -a name -m "标签描述" commit-id
查看标签:git tag ; git show name
删除标签:git tag -d name
推送标签到远程:git push origin (远程仓库名) name
一次推送本地所有标签:git push origin --tags
删除已经推送的标签:git tag -d name; git push origin :refs/tags/name
13. 搭建git服务器:链接