一、
git config --global user.name "xxx";
git config --global user.email "xxx";
git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
二、
pwd 命令是用于显示当前的目录。
通过命令 git init 把这个目录变成git可以管理的仓库,这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。
三、
第一步:使用命令 git add readme.txt添加到暂存区里面去。
第二步:用命令 git commit告诉Git,把文件提交到仓库。
可以通过命令git status来查看是否还有文件未提交。
可以使用如下命令:git diff readme.txt 查看修改的部分。
可以使用命令 git log 查看更改日志。如果嫌显示的信息太多的话,我们可以使用命令 git log –pretty=oneline。
四、
想把当前的版本回退到上一个版本,第一种是:git reset --hard HEAD^ 那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset --hard HEAD~100 即可。
我们也可以通过版本号回退,使用命令方法如下:git reset --hard 版本号。如果不知道版本号,方法如下。
要如何知道增加3333内容的版本号呢?可以通过如下命令即可获取到版本号:git reflog 演示如下:
五、
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
命令 git checkout --readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,与暂存区一致。
注意:命令git checkout -- readme.txt 中的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了。
六、先有本地仓库后有远程仓库
先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置:
第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:
ssh-keygen -t rsa –C “youremail@example.com”,
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第二步:登录github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。点击 Add Key,你就应该可以看到已经添加的key。
现在的情景是:我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。
创建GitHub仓库后,执行 git remote add origin https://github.com/tugenhua0707/testgit.git(自己的,该方法让自己的仓库与远程仓库关联);
然后把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。命令如下:git push -u origin master
我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master
分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过如下命令:
git push origin master(或者其他分支,一般情况是推送主分支,dev分支更改好后与主分支合并然后推送主分支)
七、先有远程仓库后克隆到本地
创建GitHub仓库;使用命令git clone https://github.com/tugenhua0707/testgit.git克隆一个本地库;
八、创建与合并分支
git checkout 命令加上 –b参数表示创建并切换到dev(git checkout -b dev),相当于如下2条命令
git branch dev
git checkout dev
总结创建与合并分支命令如下:
查看分支:git branch 会列出所有的分支,当前分支前面会添加一个星号。
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name 命令加上 –b参数表示创建并切换,相当于如下2条命令:git branch name + git checkout name
合并某分支到当前分支:git merge name
删除分支:git branch –d name
通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,我们可以使用带参数 –no-ff来禁用”Fast forward”模式。命令如下:git merge –no-ff -m “注释” dev
九、如何解决冲突?
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<HEAD是指主分支修改的内容,>>>>>fenzhi1 是指fenzhi1上修改的内容,如上图可以看到99999999是主分支更改的内容,8888888888是fenzhi1上更改的内容。
分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
十、临时分支
当无法提交当前工作区时候新建一个紧急issue,可以将当前工作区隐藏(git stash),然后创建紧急issue分支进行更改提交,然后再切换到已经隐藏的分支(git checkout dev),我们可以使用命令git stash list来查看隐藏的工作现场,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:
1.git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2.另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
十一、多人协作
-
要查看远程库的信息 使用 git remote,要查看远程库的详细信息 使用 git remote –v,(远程库的默认名称是origin)
-
把该分支推送到远程库对应的远程分支上: 使用命令 git push origin master(或者dev)
-
当两个人同时对一个文件进行了修改之后会有冲突,可以先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。
-
抓取远程分支时候如果git pull失败,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接,如下:git branch --set-upstream dev origin/dev,解决后,提交,再push。