Git命令学习总结(廖雪峰官方Git教程)

 
 
1、Windows系统安装完Git后,需要在Git Bash命令窗口输入以下命令,进行用户名和邮箱设置。
 
2、初始化一个Git仓库,使用git init命令。
 
3、添加文件到Git仓库,分两步:
     使用命令git add <file>,注意,可反复多次使用,添加多个文件;
     使用命令git commit -m <message>,完成。
 
4、要随时掌握工作区的状态,使用git status命令。
     如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
 
5、版本回退:
   Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
     HEAD指向的版本就是当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^。
     穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。如果嫌输出信息太多,可以加上参数--pretty=oneline
   
     (前面一长串信息为commit_id,使用SHA1计算出来的一个非常庞大的数字,用十六进制表示,以自己电脑生成为准)
     要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
 
6、版本库:
  工作区有一个隐藏目录.git,不算工作区,是git的版本库。版本库里存了许多东西,其中最重要的就是stage(暂存区),还有git为我们创建的第一个分支master,以及指向master的一个指针叫HEAD。
往git版本库添加文件时分两步,首先将需要提交的文件通通放到暂存区(使用git add命令),然后往master分支上提交更改。(git commit)。注:没有使用git add命令提交到暂存区的文件,不会提交到分支上。
 
7、撤销修改:
场景1:当乱改了工作区的文件内容,想要直接丢弃时,用命令git checkout -- file。
场景2:当乱改了工作区文件内容且添加到暂存区时,想要丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销参照版本回退。(前提时没有推送到远程库)
 
8、删除文件:用命令git  rm <file>。如果一个文件已经提交到版本库,永远不用担心误删,可用命令git checkout -- file 命令恢复,但只能恢复到最新版本。(删除文件夹命令:git rm -rf  文件夹名称)
 
9、远程仓库:
(1)用命令 ssh-keygen -t rsa -C "yourmail@example.com"产生私钥与公钥,在用户主目录.ssh中可以找到id_rsa与id_rsa.pub两个文件。登录GitHub,打开“Account settings”,“SSH-Keys”页面将公钥添加进去。这样就可以用GitHub免费托管你的Git仓库。
(2)添加远程库:
第一步,用命令git remote add origin git@server-name:path/repo-name.git将本地与远程库关联。
origin为远程库名,Git默认叫法。例如:(需把Judynie换成自己的GitHub账户名,learngit为本地库名)
第二步,将本地所有内容推送到远程库上。用命令git push -u origin master(由于远程库是空的,第一次推送master分支时,加上-u参数,不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来。之后可以直接使用命令git push origin master推送最新修改。)
注:第一次使用push命令会出现以下信息,输入yes,一路回车即可。
 
10、从远程库克隆:要克隆一个仓库,首先必须知道仓库地址,然后使用git clone命令克隆。如下:
查看远程库信息命令:git remote -v
 
11、分支管理:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>(fast forward模式合并,看不出来曾经做过合并) 或  git merge --no-ff -m 'commit test' <name> (加上参数--no-ff就可以采用普通模式合并,合并后的历史有分支,能看出来曾经做过合并)例如:
删除分支:git branch -d <name>/ git branch -D <name> 强行删除。
 
12、解决冲突:当Git无法自动合并分支时,就必须首先解决冲突。
解决冲突的办法就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph(可加上参数 --pretty=oneline --abbrev-commit 简化输出内容)
 
 
13、bug分支:修复bug时会创建新的bug分支,然后合并删除。当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,然后再git stash pop(恢复现场同时把stash内容也删了),回到工作现场。
feature分支:开发一个feature,最好新建一个分支。
 
 
14、多人协作工作模式:
1、首先,可以用git push origin <branch name>推送自己的修改。
2、如果推送失败,需要用git pull试图合并。
注:若提示no tracking information, 则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name> 如下:
3、如果合并有冲突,则解决冲突,并在本地提交。
4、没有冲突或者解决掉冲突后,再用git push origin <branch name>就能推送成功。
 
 
15、git rebase命令可以把本地未push的分叉提交历史整理成直线,使得我们在查看历史提交变化时更容易, 因为分叉的提交需要三方对比。
 
16、标签管理:发布一个版本时,我们通常在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本。
(1)命令 git tag <tagname> 创建标签,默认为HEAD,也可以指定一个commit id
(2)命令 git tag -a <tagname> -m 'blalabla' 可以指定标签信息
(3)命令 git tag 可查看所有标签信息
(4)命令 git push origin <tagname> 可推送一个本地标签
(5)命令 git push origin --tags 可推送全部未推送过的本地标签
(6)命令 git tag -d <tagname> 可删除一个本地标签
(7)命令 git push origin :refs/tags/<tagname>可删除一个远程标签
 
17、在GitHub上可以任意Fork开源仓库;自己拥有Fork后的仓库的读写权限;可以推送pull request给官方仓库贡献代码。
 
18、给命令配置别名:git config --global alias.st status 相当于 git status,当前用户的Git配置文件放于用户主目录下的一个隐藏文件.gitconfig中。如下:
 
 
 
 
 
posted @ 2018-12-26 21:43  萍水测试  阅读(390)  评论(0编辑  收藏  举报