美文网首页iOS开发
Git的简单使用

Git的简单使用

作者: Eddiegooo | 来源:发表于2017-09-04 15:07 被阅读19次

    前提:

    SVN属于集中式管理:需要依赖网络以及“中央管理库”
    Git属于分布式管理:不需要网络,任何人本地都是一个完整的代码库。

    注意事项:

    1、不管是删除还是添加,都要先将改变的代码add,然后在commit
    2、发起pull request的时候, 是将你fork的项目clone到本地, 然后进行修改,修改完了再提交代码到你的工作区,因为别人的你也提交不上去 O(∩_∩)O哈哈~ 。然后在你fork的项目中发起pull request

    常用命令:

    pwd: 查看目录地址
    ls:显示所有子文件夹
    cd:切换文件夹进入; cd.. 后退 cd~ 直接退到根目录
    cat <file> 查看文件内容
    open file 打开文件
    终端命令:
    Ctrl + A 将光标跳到行头
    Ctrl + E 将光标跳到行尾
    Ctrl + L 清屏
    Ctrl + R 搜索以前执行过的命令
    Ctrl + C 终止正在运行的程序
    Ctrl + D 退出 Terminal(这里建议使用 Command + W 来完成)

    Git的使用,本地仓库 大体流程

    1.创建一个Git仓库 : git init

    2.在创建的目录下,随便添加文件。然后git add <file> 如果有多个文件,可以多次添加 ,也可以添加一个文件夹的,添加文件夹一定要是完整路径,注意后面那个路径"/"符号。只需写出前几个字母,tab按键会自动补全,git提示信息那里也有完整的要添加的文件。
    git add . // 注意 . 是增加所有的*

    3.将你添加的文件提交到仓库。 git commit (有一个问题:每次git commit之后,都要弹出确认提交的文件,要手动选择,删除前面的#号。假如新加的文件很多,一个个删除#号好麻烦啊,有没有别的方法?还是我操作的是错误的? 求指导)————有的时候会弹出,有时候又不用弹出,不知道什么原因。

    git commit -m "这次提交的备注" 强烈建议每次commit都要写上备注,方便后续查看。 git commit 的时候不需要指出对应的文件。

    4.git status 查看当前的状态。 可以看到内容的变化,需要提交修改的内容。
    5.git diff 可以比较前后两次修改之间的变化。

    6.查看版本提交信息
    git log 可以查看提交的版本信息和顺序号 git log --pretty=oneline 查看信息简单明了。

    7.版本回退
    git reset --hard HEAD^ 后面这个^数量,代表返回前面第几次提交,太多了的时候,可以跟数字。git reset --hard HEAD^^^ , git reset --hard HEAD^66
    不能确定要返回的位置是第几次提交位置,可以通过log查看对应提交的版本序号,用 git reset --hard 78er7387 返回到对应提交位置 。这个是版本号,没有必要写全,只写前几位就好,git会自动查找的。
    版本回退后悔了,你可以使用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    撤销修改:
    没有add之前,用git checkout --file。 一旦add到了暂存区,就要用git reset HEAD file , 然后再git checkout --file。

    8.本地关联远程的仓库 git remote add origin <远程仓库地址>
    关联之后,本地有修改就可以直接提交代码了。 git push origin master
    第一次提交多添加一个参数,将本地与远程的分支关联 git push -u origin master

    远程仓库与本地仓库的关联

    下载远程仓库到本地:
    git clone <远程仓库的url地址>

    1.下载下来的代码一般只有一个分支,但是我们最好不要在这个分支上进行修改。
    新建一个develop分支 git checkout -b develop 切换到develop分支 git branch develop
    一步到位法:git branch -b develop 新建一个develop分支,并且切换到develop分支。
    以后在修改、提交代码就是在develop分支上了。 开发完成后就可以合并到master分支上去了。

    2.合并分支: 首先切换到要合并的分支,然后在合并
    git checkout -b master
    git merge develop 合并develop分支内容到master分支。

    3.删除分支:开发分支功能完了,代码也合并了,就可以删除了
    git branch -d develop git branch -D develop 后面这个是强制删除分支
    注:合并dev分支,请注意--no-ff参数,表示禁用Fast forward模式。
    git merge --no-ff -m "merge with no-ff" develop
    本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
    小结:查看分支:git branch
    创建分支:git branch <name>
    切换分支:git checkout <name>
    创建+切换分支:git checkout -b <name>
    合并某分支到当前分支:git merge <name>
    删除分支:git branch -d <name>

    4.冲突解决:
    场景:当你在develop分支改变了一个文件,然后切换到master分支又修改了同一个文件。合并代码的时候就会出现冲突。

    git status 查看提示的冲突,在master分支上修改冲突内容,在commit即可。 然后删除develop分支。
    小结:当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    用git log --graph命令可以看到分支合并图。

    5.暂存工作区

    一个功能还没有开发完,代码不能提交,然后要紧急修改一个bug,这个时候就要把现在的代码暂存起来。
    使用 git stash 命令,暂存现在的代码。
    然后切回master分支,在新建一个fixbug分支。 git checkout -b master git branch -b fixbug
    然后在这个fixbug分支,修改好bug,提交代码,在合并到master分支。git add .; git commit -m "fix a bug" ; git checkout master ; git merge fixbug . git branch -d fixbug.完成本次的bug修复。

    然后你就又可以返回到develop分支继续你未完成的开发任务了。
    git checkout develop 然后使用 git stash list 查看暂存区。

    恢复之前的工作区有两个办法:
    一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
    另一种方式是用git stash pop,恢复的同时把stash内容也删了;

    你可以多次暂存内容,然后使用git stash list 命令查看暂存的位置,使用git stash apply stash@{0} 回复你想继续工作的内容。 @{数字}这个数字就是你多次存储的序列数字

    6.多人合作
    你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支:
    $ git checkout -b dev origin/dev

    提交代码之前一般要先git pull ... 如果git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
    git branch --set-upstream dev origin/dev

    如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

    7.添加标签
    git log 默认标签是打在最新提交的commit上的
    git tag v0.9 6224937 也可以根据commitID打标签
    还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
    git tag -a v0.1 -m "version 0.1 released" 3628164
    用命令git show <tagname>可以看到说明文字:

    8.操作标签
    git tag -d tagName //删除一个标签
    git push origin tagName 推送某一个标签到远程。一次性推送所有标签到远程 git push origin --tags
    如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
    git tag -d v0.9
    然后,从远程删除。删除命令也是push,但是格式如下:
    git push origin :refs/tags/v0.9

    关联仓库问题:
    如果在使用命令git remote add时报错:
    git remote add origin url
    fatal: remote origin already exists.
    这说明本地库已经关联了一个名叫origin的远程库,此时,可以先用git remote -v查看远程库信息:
    git remote -v
    origin git@github.com:michaelliao/learngit.git (fetch)
    origin git@github.com:michaelliao/learngit.git (push)
    可以看到,本地库已经关联了origin的远程库,并且,该远程库指向GitHub。
    我们可以删除已有的GitHub远程库:
    git remote rm origin
    再关联码云的远程库(注意路径中需要填写正确的用户名):
    git remote add origin url

    当你在git pull origin master 命令之后,报错:

     * branch            master     -> FETCH_HEAD
    fatal: refusing to merge unrelated histories
    

    这是因为:预设行为不允许合并没有共同祖先的分支,需要加上--allow-unrelated-histories选项,再进行pull操作才不会出现此类错误信息:
    git pull origin master --allow-unrelated-histories

    最基本的使用应该这些就可以了,git很深,如果只是单纯的使用它管理代码,这些应该可以了。如果想深入研究的在去搜索其他命令吧。

    感觉每一个小点都可以写一篇文章了,好多内容啊。

    1.在本地目录下关联远程repository :
    git remote add origin [url]
    2.取消本地目录下关联的远程库:
    git remote remove origin
    远程下载到本地:
    git clone url
    3.查看版本信息:
    git log --pretty=oneline
    git log --graph命令可以看到分支合并图。
    4.撤销修改:
    git checkout -- flie --是必不可少的,否则就是切换操作了。。
    已经add的文件,首先:git reset HEAD file ,然后再git checkout --file
    5.从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
    6.在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
    7.建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
    8.用git diff HEAD --file命令可以查看工作区和版本库里面最新版本的区别
    9.设置别名:
    git config --global alias.ci commit
    git config --global alias.st status
    设置别名组合:
    git config --global alias.psm 'push origin master'
    git config --global alias.plm 'pull origin master'

    相关文章

      网友评论

      本文标题:Git的简单使用

      本文链接:https://www.haomeiwen.com/subject/dwdhjxtx.html