0:git clone git项目仓库
Git 会自动为你将此远程仓库命名为 origin,并下载其中所有的数据,建立一个指向它的 master 分支的指针,在本地命名为 origin/master,但你无法在本地更改其数据。接着,Git 建立一个属于你自己的本地 master 分支,始于 origin 上 master 分支相同的位置,你可以就此开始工作。
一次 Git 克隆会建立你自己的本地分支 master 和远程分支 origin/master,并且将它们都指向 origin 上的 master 分支。
1: git checkout master, git pull
2: git checkout jiepengliu, git rebase master jiepengliu
如果没有本地分支,则需要通过git branch jiepengliu,来创建本地的分支
3: 写代码, git add . , git commit -m “注释”
4: git push origin jiepengliu(这个操作会创建remotes/origin/jiepengliu这个目录)
5: 登录网址,申请jipengliu合并到master: New Merge Request:
6: 有合并权限的人同意合并: Accept Merge Request
以下是一个例子:
通过git branch -va 查看分支的细节信息:
可以看出,尚未建立本地分支,通过git checkout -b jiepengliu
(git checkout 命令用来切换分支,或者检出内容到工作目录)
从上图中间那一列的字符可以看出此时的分支jiepengliu和从master更新而来的,所以两者是相同的。
先通过add命令进行内容的添加,通过git status查看变更的情况,如下图:
查看分支状态:
将更新的部分commit到缓存中,并撰写对应的注释:
此时的jiepengliu分支已经发生了变化,可以从版本号看出来
此时,再将其push到 origin jiepengliu
可以看出,版本号远端的origin jiepengliu的版本号和本地分支是一致的。
此时可以去远端(网页)查看上传成功的jiepengliu分支,是已经上传成功的。在网页上面申请分支的合并,合并到master之后。
在shell这里checkout下master(即切换到master目录下)
对master进行pull操作
此时再查看细节,可以发现此时的master已经被更新和远端一致(版本号d932113)
再切换到jiepengliu分支:
通过git rebase master jiepengliu,确立jiepengliu的地位:
再git push origin jiepengliu,即更新到远端的origin jiepengliu
至于pull的时候,可以采用下面的流程:
git checkout master#切换到master
git pull#同步pull远端master到本地master
git checkout liujiepeng#切换到本地liujiepeng分支
git rebase master liujiepeng#更新本地liujiepeng分支,使其和本地master一致
git checkout liujiepeng#切换到指定分支
git push origin liujiepeng#push操作
git branch -va#查看分支情况
补充说明:
如果远端代码有其他人提交了,然后本地自己开发新添加代码后,想要将远端的代码pull,会发生代码冲突:
your local changes to the following files would be overwritten by merge
的提醒。
这时候需要
如果希望保留本地开发所所做的改动,仅仅并入远端其他人的代码,处理方法如下:
git stash
git pull
git stash pop
然后可以使用Git diff -w +文件名 来确认代码自动合并的情况。
1)当对于本地的文件被误删除,想要获取远端的最新版本可以通过下述方式获取:
git checkout -- 文件名
2)当add操作之后,想要回退该操作,可以通过
git reset HEAD
实现
3)如果是想要回退到历史版本
可以先从git log查看该分支下所有历史版本
git reset --hard HEAD^
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
如果此时又想要回去刚才回退之前的版本,即版本回退之后,又后悔了,此时可以通过版本号进行复原。比如你回退之前的版本号是3628164开头的一串东东。版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
git reset --hard 3628164
git diff显示 ^M
由于不同系统下对于回车换行的定义不同,导致在用git diff
查看文本的更改情况时候,发现在差异上多了每行的^M
。所以就涉及到CRLF 和 LF 之间的转换问题。
CRLF 就是 \r\n,LF 就是 \n,在 vim 底下你會在每一行後面多看到一個 ^M,那個就是 \r
在解决方案上,在linux端只需要git config --global core.autocrlf input
将回车换行转为lf
http://littleq.logdown.com/posts/2013/12/02/git-merge-ignore-line-endings-when-crlf
创建标签和标签的提交:
git tag -a v2017_12_18 -m "歌词上传优化"
git push origin --tags
先在master下修改完代码,commit之后,先不push。
而是先checkout到本地的publish分支,然后在这个分支下进行git merge master操作,进行分支合并。再push到远端。