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://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758392816224cafd33c44b4451887cc941e6716805c000

远程仓库

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请求。

posted @ 2018-11-22 10:18  hostid  阅读(306)  评论(0编辑  收藏  举报