Git的简单使用

前提:

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'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268