原文地址链接:
窗口系统
配置
git config --global user.name “Your Name”
$ git config --global user.email “[email protected]”
git config 命令的--global 参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
1.git初始化
2.git添加<file>
如出现
警告:LF将被readme.txt中的CRLF替换。
该文件的原始行结束在您的工作目录中。
windows中的换行符为CRLF,而在linux下的换行符为LF,所以在执行add。时出现
提示,解决办法:
git config --global core.autocrlf false //禁用自动转换
3.git commit -m“提交代码”
-m记录提交的信息
4.修改文件内容vim readme.txt
查看修改的内容
git状态
5.git diff查看修改的内容
git diff readme.txt
6.git日志
查看历史修改记录
或者使用
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty = ONELINE 参数:
git log --pretty = oneline
7.回退到上一版本
git reset --hard HEAD ^
回到上100个版本
git reset --hard HEAD〜100
Git的必须知道当前版本是哪个版本,在混帐中,用头表示当前版本,也就是最新的提交
3628164 ... 882e1e0 (注意我的提交ID和你的肯定不一样),上一个版本就是HEAD ^ ,上上一个版本就
是HEAD ^^ ,当然往上100个版本写100个^ 比较容易数不过来,所以写成HEAD〜100 。
现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git
复位命令:
git re set --hard HEAD ^
8.查看内容
猫readme.txt
9.再次回退
只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPL 的commit id 是3628164 ... ,于是就可以指定回到未来的某个版本:
git re set --hard 3628164
10.git reflog查看每一次命令的记录
Git提供了一个命令git reflog 用来记录你的每一次命令:
$ git reflog ea34578 HEAD @ {0}:reset:moving to HEAD ^ 3628164 HEAD @ {1}:commit:append GPL ea34578 HEAD @ {2}:commit:add distributed cb926e7 HEAD @ {3}:commit(initial):写了一个自述文件
终于舒了口气,第二行显示append GPL 的commit id是3628164 ,现在,你又可以乘坐时光机回到未来了。
11.git diff HEAD - readme.txt可以查看工作区和版本库里面最新版本的区别
12. git checkout - readme.txt
撤销上一次操作,回到最近一次git add或git commit时的状态
假如已经git add在暂存区了
git status查看是否已经提交到工作区
git reset HEAD readme.txt把暂存区的修改撤掉,重新放回工作区
再使用
git checkout - readme.txt
13.创建自己的SSH密匙
··· ssh-keygen -t rsa -C“[email protected]”
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个关键也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh 目录,里面有id_rsa 和id_rsa.pub 两个文件,这两个就是SSH密钥的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“帐户设置”,“SSH密钥”页面:
然后,点“添加SSH密钥”,填上任意标题,在关键文件框里粘贴id_rsa.pub 文件的内容:
点“Add Key”,你就应该看到已经添加的Key:
14.添加远程库
git remote add origin [email protected]:michaelliao / learngit.git
创建起源的远程库
git push origin master
把本地主分支的最新修改推送至GitHub的
当提示致命的时候:remote origin已经存在。时
解决方法:
git remote rm origin
再添加远程的Git仓库
git remote add origin [email protected]:michaelliao / learngit.git
如果执行git remote rm origin报错的话,我们可以手动修改gitconfig文件的内容
vi .git / config
把[remote“origin”]那一行删掉就好了。
SSH警告
当你第一次使用的Git的克隆或者推命令连接GitHub上时,会得到一个警告:
主机'github.com(xx.xx.xx.xx)'的真实性无法建立。RSA密钥指纹是xx.xx.xx.xx.xx. 你确定要继续连接(是/否)吗?
输入是即可
要关联一个远程库,使用命令git remote add origin git @ server-name:path / repo-name.git ;
关联后,使用命令git push -u origin master 第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master 推送最新修改;
git remote -v查看远程仓库地址
15.从远程克隆项目
git clone git @github 。com:michaelliao / gitskills.git
git clone [email protected]:meiyingxiang / gitskills.git
如遇到Github遇到将IP地址“192.30.252.128”的RSA主机密钥永久添加到已知主机列表
解决办法:
vim / etc / hosts
添加一行:192.30.252.128 github.com
16.创建分支
我们创建开发分支,然后切换到开发分支:
$ git checkout -b dev 切换 到一个新的分支 “dev”
-b参数表示创建并切换,相当于
git分支dev
git checkout dev
查看当前分支
git分支
当前分支前面会标一个* 号。
开发分支上正常提交,比如对readme.txt文件做个修改,加上一行:
创建一个 新的 分支很快。
然后提交:
$ git add readme.txt $ git commit -m “分支测试”
dev的分支的工作完成,我们就可以切换回主分支:
git checkout master
切换回主分支后,再查看一个readme.txt文件文件,刚才添加的内容不见了因为那个提交是在!开发分支上,而主分支此刻的提交点并没有变:
我们把dev的分支的工作成果合并到主分支上:
$ git merge dev 更新 d17efd8..fec145a 快速转发readme.txt | 1 + 1 文件更改, 1 插入(+)
git merge 命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev 分支的最新提交是完全一样的。
注意到上面的快进信息,Git会告诉我们,这次合并是“快进模式”,也就是直接把主指向开发的当前提交,所以合并速度非常快。
当然,也不是每次合并都能Fast-forward ,我们后面会讲其他方式的合并。
合并完成后,就可以放心地删除dev的分支了:
$ git branch -d dev 删除 分支dev(是fec145a)。
删除后,查看分支,就只剩下主人分支了:
$ git分支
Git的鼓励大量使用分支:
查看分支:git分支
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
17.解决冲突
git checkout -b feature1创建新分支
git checkout master切换分支
git merge feature1合并分支
自动合并readme.txt CONFLICT (内容):在 readme.txt中合并 冲突 自动合并失败; 修复冲突 ,然后 提交结果。
产生冲突
修改提交的内容
再提交
$ git add readme.txt $ git commit -m “冲突修复”
用带参数的git log 也可以看到分支的合并情况:
$ git log --graph --pretty = oneline --abbrev-commit
删除优点1 分支:
$ git branch -d feature1
18. 准备合并dev 分支,请注意- no -ff 参数,表示禁用Fast forward :
$ git merge --no-ff -m “merge with no-ff” dev
19bug分支
git stash 把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list查看工作现场列表
工作现场还在,Git的把藏匿内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply 恢复,但是恢复后,stash内容并不删除,你需要用git stash drop 来删除;
另一种方式是用git stash pop ,恢复的同时把stash内容也删了:
恢复指定的藏匿处,用命令:
$ git stash apply stash @ { 0 }
20.feature-vulcan 分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用命令git branch -D feature-vulcan
21. 查看远程库的信息,用git remote
或者使用git remote -v显示更详细的信息
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库推送时,要指定本地分支,这样,Git的就会把该分支推送到远程库对应的远程分支上:
$ git push origin master
如果要推送其他分支,比如dev ,就改成:
$ git push origin dev
-
查看远程库信息,使用git remote -v ;
-
本地新建的分支如果不推送到远程,对其他人就是不可见的;
-
从本地推送分支,使用git push origin branch-name ,如果推送失败,先用git pull 抓取远程的新提交;
-
在本地创建和远程分支对应的分支,使用git checkout -b分支名称的起源/分支名称,本地和远程分支的名称最好一致;
-
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin / branch-name ;
-
从远程抓取分支,使用git pull ,如果有冲突,要先处理冲突。
先关联GitHub上的远程库:
git远程添加github git @github 。com:michaelliao / learngit.git
注意,远程库的名称叫github ,不叫origin 了。
接着,再关联码云的远程库:
git remote添加gitee git @gitee 。com:liaoxuefeng / learngit.git
同样注意,远程库的名称叫gitee ,不叫起源。
现在,我们用git remote -v 查看远程库信息,可以看到两个远程库:
git remote -v gitee git @gitee 。com:liaoxuefeng / learngit.git(fetch)gitee git @gitee 。com:liaoxuefeng / learngit.git(push)github git @github 。com:michaelliao / learngit.git(fetch)github git @github 。com:michaelliao / learngit.git(push)
如果要推送到GitHub上,使用命令:
git推github主
如果要推送到码云,使用命令:
git推gitee高手
可以用-f 强制添加到Git的方法:
$ git add -f App。类
显示名称的方法:
git config user.name git config --list
或者查看〜/的.gitconfig 文件。
改名字:
git config --global user .name “Furzoom” #或vi〜/ .gitconfig
如果不加--global 就是修改当前仓库的下的配置。
git config user .name “Furzoom”
或者直接修改当前仓库的git的/配置文件。
修改电子邮件,与上面是同样的操作,只不过需要将名字换行邮件即可。
从远程库克隆
git clone git @github 。com:michaelliao / gitskills.git
git fetch origin branchname:branchname
可以把远程某各分支拉去到本地的分支名称下,如果没有分支名称,则会在本地新建BRANCHNAME
git checkout origin / remoteName -b localName
获取远程分支remoteName到本地新分支localName,并跳到localName分支
git pull拉取远程分支到本地
$ git pull <远程主机名> <远程分支名>:<本地分行名>
如拉取远程的主分支到本地WY分支:
git拉起源大师:wy
我是git pull服务器上代码时候遇到:
错误:对以下文件的本地更改将被合并覆盖:
设备/华勤/ hq8382_tb_b1a_l / ProjectConfig.mk
请在进行合并之前提交您的更改或隐藏它们。
中止
先使用git stash
然后再git拉起源高手
git stash:备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop:从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list:显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear:清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
欢迎关注微信号:魅影响
或扫描下方二维码关注