git与github
https://www.cnblogs.com/lifexy/p/8353040.html
git
git config --global user.name 'jiangfeng.zhang'
git config --global user.email 'retries@126.com'
git config --global --list
Git 警告 LF will be replaced by CRLF
rm -rf .git // 删除.git
git config --global core.autocrlf false //禁用自动转换
git init
git add .
//查看配置信息
https://blog.csdn.net/qwaszx523/article/details/79072276
//git http方式每次都要输入密码问题
在git bash 中执行
设置记住密码(默认15分钟):
git config --global credential.helper cache
如果想自己设置时间,可以这样做:
git config credential.helper ‘cache –timeout=3600’
这样就设置一个小时之后失效
长期存储密码:
git config --global credential.helper store
//git出错
server certificate verification failed. CAfile: none CRLfile: none
git config --global http.sslverify false
git config --global https.sslverify false
提交
untracked : 未跟踪状态
tracked : 已跟踪状态
https://segmentfault.com/q/1010000005900988
https://baijiahao.baidu.com/s?id=1563515863527000&wfr=spider&for=pc
git commit -a -m “massage”
其他功能如-m参数,加的-a参数可以将所有已跟踪文件
,注意已经跟踪文件
中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区,注意,
新加的文件(即没有被git系统管理的文件)是不能被提交到本地仓库的。建议一般不要使用-a参数,正常的提交还是使用git add先将要改动的文件添加到暂存区,再用git commit 提交到本地版本库。
//git commit多行提交,使用单引号进行多行扩展。
git commit -m‘
message1
message2
message3
’
多行提价时不要写数字在github上很难看,以后建议写成
--message1--
--message2--
--message3--
如何提交文件?
一、针对先前已经追踪过的文件进行了修改,那么我们可以用下述方法提交:
方法一、
git add .
git commit -m "some str"
git push
方法二、-am参数放在一起,就相当于git add ,然后git commit
git commit -am "some str" //git commit -a -m "some str"
git push
二、如果当前文件是新创建的文件,提交的话必须使用方法一(因为还没有追踪过)
touch test.txt
git add .
git commit -m "some str"
git push
版本管理
版本提交记录查看
一 、git log命令可以显示所有提交过的版本信息。显示信息如下:
$ git log
commit e1bdff6e4830e09383078c860f45334d03771b03 (HEAD -> master)
Author: lyf1995 <506833107@qq.com>
Date: Sat Dec 16 11:47:59 2017 +0800
第二次提交
commit 62e67397d7891610ed7db7edab0e10619d9d8f0e
Author: lyf1995 <506833107@qq.com>
Date: Sat Dec 16 11:06:10 2017 +0800
第一次提交
如果觉得信息显示太繁琐 可以加上参数 --pretty=oneline[只会留下commit id (版本号 (用SHA1字串表示))和 提交版本时的描
述信息] 显示效果如下:
$ git log --pretty=oneline
e1bdff6e4830e09383078c860f45334d03771b03 (HEAD -> master) 第二次提交
62e67397d7891610ed7db7edab0e10619d9d8f0e 第一次提交
二 、git reflog如果在回退以后又想再次回到之前的版本,git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录。
$ git reflog
e1bdff6 (HEAD -> master) HEAD@{0}: commit: 第二次提交
62e6739 HEAD@{1}: reset: moving to HEAD^
8113f0d HEAD@{2}: reset: moving to HEAD^
dc6bb4e HEAD@{3}: reset: moving to dc6bb4e
8113f0d HEAD@{4}: reset: moving to HEAD^
dc6bb4e HEAD@{5}: commit: my.txt增加44444内容
8113f0d HEAD@{6}: commit: 文件增加33333内容
62e6739 HEAD@{7}: commit (initial): 第一次提交
总结:
git reset –hard 指令由最新的版本V1回退到V0时:
git log :将不会保留新版本V1的commit记录,所以想再次回退到V1,借助git log 获取commit id时不能够的。
git reflog: 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,所以想再次回退到V1,借助git relog 获取commit id
版本滚动
//方法一:以提交的第N次进行版本回退
git reset –hard HEAD^ //那么如果要回退到上上个版本只需把 HEAD^ 改成 HEAD^^ 以此类推。
git reset –hard HEAD~100 //回退到前 100 个版本。
//方法二:以提交的ID进行版本回退
// commit_id 只需要直到前面几位,具体需要几位,推荐5位以上。
git reset –hard commit_id (建议使用)
如何将库里的版本也同时进行回滚
git log :将不会保留新版本V1的commit记录,所以想再次回退到V1,借助git log 获取commit id时不能够的。
git reset –hard commit_id (建议使用)
git push -f //强制提交,此时库里的版本也进行的回滚,不过此处一定要注意是要本条指令,一旦库里的版本回滚后,将再也不能还原了!!!!!!!!!!
Check out
1、全部撤销工作区的修改,这里有两种情况:
git checkout -- readme.txt
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;(上一次的git commit 后,修改readme.txt 但没有执行git add,回到上一次的git commit后的结果)
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。(修改readme.txt,并且git add,然后又修改了readme.txt, 此时执行git checkout,回到git add 后的状态)
总之,就是让这个文件回到最近一次git commit或git add时的状态。
2、Check out 指令对分支的管理
git branch branchName //创建新分支
git checkout branchName //切换到新分支
git checkout -b branchName //上面两条指令用这一条替代
git branch //查看当前分支情况
//概览修改了哪些文件
git show 提交的哈希值 --stat
git show HEAD --stat
文件删除
远程仓库
https://git-scm.com/book/zh/v2/Git-基础-远程仓库的使用
远程仓库服务器是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库,以便推送或拉取数据,分享各自的工作进展.管理远程仓库的工作,包括添加远程库,移除废弃的远程库,管理各式远程库分 支,定义是否跟踪这些分支,等等.本节我们将详细讨论远程库的管理和使用.
添加远程仓库
在本地仓库添加一个远程仓库,然后将本地仓库的内容push到远程仓库。
怎么理解这个东西?
本地仓库即就是本地的git仓库
本地仓库添加一个远程仓库:
目前理解,本地仓库注入远程仓库的仓库服务器的名称(origin)、地址信息(ssh)、仓库名(ticgit)。
那么就有个问题,既然注入的信息是真实的远程仓库,那么你的真实的远程仓库肯定是与该注册的信息信息真实对应的。
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v //列出所有远程仓库信息, 包括网址
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)
//现在你可以在命令行中使用字符串 pb 来代替整个 URL。 例如,如果你想把本地仓库push到远程仓库
git push pb master
查看已有的本地及远程分支
git branch -a
git远程信息发生变换,本地如何修改
git remove rm origin //在本地仓库删除远程仓库
git remote set-url origin http://192.168.100.235:9797/john/git_test.git //重新修改远程仓库地址
git remote rename master old_master //重命名一些远程仓库的代号
查看远程仓库
//如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出你指定的每一个远程服务器的简写。 如果你已经克隆了自己的仓库,那么至少应该能看到 origin - 这是 Git 给你克隆的仓库服务器的默认名字:
$ git clone https://github.com/schacon/ticgit
$ cd ticgit
$ git remote
origin
//你也可以指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
分支管理
标签
其它
1、提交文件夹
2、比较不同
3、生成补丁
采用git ls-files命令,来看看这个命令的帮助信息:
要查看删除的文件: git ls-files --deleted
使用命令checkout来恢复:git checkout -- file_name
git常用指令总结
https://blog.csdn.net/where_slr/article/details/80937337
https://www.cnblogs.com/lwzz/archive/2013/02/23/2921426.html
https://www.cnblogs.com/libin-1/p/5918468.html
https://blog.csdn.net/q844258542/article/details/52237906
https://www.cnblogs.com/zhangqie/p/7460689.html、
远程分支与本地分支比较
https://www.linuxidc.com/Linux/2019-08/159850.htm //分支的查询
https://blog.csdn.net/meng19910117/article/details/84402456
https://zhidao.baidu.com/question/746317462730453332.html
//远程拉取最新版本到本地
https://www.cnblogs.com/qiu-Ann/p/7902855.html
git忽视文件提交
https://blog.csdn.net/weixin_44104648/article/details/110391026
jianshu.com/p/ade52455c3a4
https://www.cnblogs.com/1156063074hp/p/12931474.html
git分支管理
https://www.cnblogs.com/ydxblog/p/7988317.html
- 查看本地分支:$ git branch
- 查看远程分支:$ git branch -r
查看已有的本地及远程分支:git branch -a
- 创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
- 切换分支:$ git checkout [name]
- 创建新分支并立即切换到新分支:$ git checkout -b [name]
- 删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
- 合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
- 创建远程分支(本地分支push到远程):$ git push origin [name]
- 删除远程分支:$ git push origin :heads/[name]
其它:当本地还没有分支新创建分支时,新创建的分支与主分支代码是相同的。
1、git checkout [name] :切换分支后,如果文件做了修改,必须进行git add . git commit -m提交后,才能重新切换到其它分支。
2、当切换到其它分支后,此时两个分支的代码上是有差别的,如果要在其它分支合并另一个分支的代码修改,使用git merge [name]进行合并,但项目如果大了,代码会有冲突,可能要解决代码冲突。
3.上述只是在本地创建了新分支,远端并没有本地创建的新分支,所以如果要把本地分支传到远端可使用:
git push origin [name]
4.如何删除远程分支
git push origin --delete new_a
修改已经commit的最后一次信息
https://blog.csdn.net/dghkgjlh/article/details/106955241
//如何修改已经commit的Log日志
二、对最后一次的提交要做修改
2.1、仅修改Log
# 本地修改上一次的提交信息
git commit --amend -m 'modify message'
# 远程提交
git push -f
2.1、追加文件不修改log
# 将忘记提交的文件,例如:忘记提交test.txt文件。
git add test.txt
# 如果想使用上次的提交信息,则可以下面这样写
git commit --amend --no-edit test.txt
2.2、追加文件并修改log
git commit --amend test.txt
# 此时会调出vim编辑器页面,如果想要修改提交信息,则修改之后,:wq保存退出即可
# 此时 git log查看两次提交最终呈现为一个提交
git push
协同开发中的操作
本人作为report,首先Fork主仓库,此时自己git上会自动生成一个仓库
git clone自动生成的这个仓库
添加主仓库作为自己的其中一个远程
git remote upstream https://github.com/paulboone/ticgit
//远程拉取上游仓库的最新代码
git fetch upstream //此操作会把主仓库的所有分支拉取下来,git branch -a
将其它分支合并到当前分支
git merge xxxx(分支)
//将上游仓库拉取的主分支最新代码,合并到当前分支
git merge upstream/master
//同步自己的远程仓库与上游一致
git commit -m "mesg"//提交代码到本地
//推送代码到仓库
git push origin maste
二、开始基于做自己的修改
一般不在自己仓库的master分支修改,而是新建一个分支:git branch report_jf
git checkout report_jf
git add a.txx
git commint -m "添加a.txt"
git push origin master
//下一步发起PR请求,pull request(在git管理界面,非命令行)
如果当前report_zj这个分支已经commit到远端,需要回退,重新做改动。那么可以这样做:
1.先生成补丁保存
2.回退,并同步远端push -f
3.打补丁,在打入补丁的基础上进行修改
4.确认无误后重新commit,push到远端
5.发起pr请求。