Git和Github初学笔记 (一)
最基本的指令
git status
查看状态
git add
+文件 把文件从工作区转到暂存区
git commit-m"提交描述"
把暂存区文件转到git仓库
查看初始化后信息 git config --list
pwd
是显示当前的文件目录 ls查看当前文件
git version
是查看git的版本
每次都要先git status查看一下状态
对于工作树,暂存区,HEAD不过多做笔记,对设置SSH key在笔记二中再续写
一、初始化以及仓库创建和操作:
1、基本信息设置:
设置用户名:git config --global user.name 'github用户名'
设置用户名邮箱:git config --global user.email '邮箱'
查看初始化后信息 git config --list
2、初始化一个新的git仓库
a、创建文件夹:自己手动右键WF(其实快捷键也没必要 )创建
或者 mkdir test
(test是文件夹名字)
b、在文件内初始化git(创建一个git仓库)
cd test
(change directory test意思是切换到test这个文件夹)
git init
会在test下生成隐藏文件.git
3、向仓库添加文件
A、创建文件:touch 文件名.后缀
比如:touch a1.php touch a1.c
B、然后查看
git status
C、如果是红色则添加到暂存区
git add a1.c(git add -all 表示添加全部)
D、再查看
git status如果成功了应该是绿色
E、上传到git库
git commit -m ‘描述说明’
可以直接使用git commit
记述详细提交信息,退出方式跟vim一样
第一行:用一行文字简述提交的更改内容
第二行:空行
第三行:记述更改的原因和详细内容
如果提交完后发现想改动可以使用git commit -amend
(修改上一条提交信息)
退出方式跟vim一样
F、查看状态
git status
如果正确,应该是nothing to commit,working directory clean(working tree clean)
4、修改仓库文件
修改用:vi a1.c
首先是按i由命令行模式换成插入模式
插入完文本后保存需要esc切换模式输入 :wq后回车,记住:冒号不能省略!!!
查看:cat a1.c
(上述也可以直接对着文件来右键选择打开方式然后选对应软件打开)
然后git status查看状态会发现修改过的文件是红色的
需要git add a1.c再查看状态git status发现就变绿色了,说明添加到暂存区了
再像之前一样提交到本地git仓库
5、删除文件
a,删除文件
一种方法:右键删除
还有一种 rm -rf a1.c
**千万注意rm后面有个空格
b,从git删除文件
git rm a1.c
c,提交操作
git commit -m ‘描述操作说明’
6、git管理远程仓库
目的:作用是备份,实现代码的集中化管理
7,提交git库
先建立远程仓库,与本地库同名例如“test”
然后git remote add添加远程仓库
例如:git remote add origin git@github.com:用户名/库名称.git
然后git push就可以把当前分支内容推送给远程仓库
git push -u origin master
这样就把master分支推送给远程仓库了
git pull
获取最新的远程仓库分支 例如git pull origin feature-D
仓库地址在哪:在github项目右上角,或者直接网址复制加一个.git
后在本地进行个人修改后可以发送回远程主机上
二、其他相关git操作
git clone
仓库地址(从远程主机克隆一个版本库)
把远程仓库clone到本地仓库同步
git branch
看自己在哪个分支,* 表示当前分支
master的话自己是主要的那个
git checkout -b
创建、切换分支
例如:git checkout -b feature-A
或者可以:git branch feature-A
再:git checkout feature-A
切换分支办法 git checkout feature-A
表示切换回feature-A分支,还有git checkout -
表示切换回上一分支(即用 - 代替分支名)
git merge
分支合并
1、首先切换回master分支
git checkout master
2、然后合并特性分支 例如feature-A
git merge --no-ff feature-A
为了在历史记录明确记录本次分支合并,我们需要创建合并并提交,因此在合并时加上–no-ff参数
git log相关
git log
查看提交日志(只能查看以当前状态为终点的历史日志)
(退出git log只要按下Q就可)
git log --pretty=short
只显示提交信息的第一行
git log a1.cpp
表示只显示指定目录的日志
git log -p
显示文件的改动
git log a1.cpp -p
显示指定文件的日志改动
git log --graph
以图表形式查看分支
查看帮助文档的方法
git log --help
git diff相关
git diff
查看更改前后的差别,可以查看工作树,暂存区和最新提交之间的差别
git diff head
查看上次改动差别
其他
git reset
回溯历史版本
git reset --hard 哈希值
(注意:哈希值输入四位以上就可以执行!!!)
例如git reset --hard e4f1a6101bee32f9e99d463e04e79367738416c7
需要当时时间点的哈希值,在git log查看日志时,commit右边就是这个提交的哈希值
git reflog
查看当前仓库执行过的操作的日志,包括回溯的操作,所以可以利用这个命令恢复到原先状态
显示操作前面代表哈希值
git rebase -i
压缩历史
当你修改一些不是很重要的内容时,不希望再提交日志里看到这些提交(比如一些拼写错误)
可以把这些提交和上一次提交合并
git rebase -i HEAD~2
之后把要被合并的不重要提交的pick改为fixup
使用git commit -am
可以省略使用git add命令将已跟踪文件放到暂存区的功能
(这个往往是你已经提交过文件被你修改过后时使用,因为此时这个文件已经被tracked,但是你还是不能直接git commit -m得先git add,所以使用这个git commit -am可以省略中间这步add )
三、可能会遇到的问题
1.没有权限 The requested URL returned error:402 Forbidden while accessing
答案:私有项目没有权限,得输入用户名密码,或者远程地址采取这种类型
vi.git/config
将[remote “origin”]
url = https://github.com/用户名/仓库名.git
修改为[remote “origin”]
url = https://用户名:密码@github.com/用户名/仓库名.git
git push -u origin master 上面命令将本地的master分支推送到origin主机,
同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
git push,默认只推送当前分支,这叫做simple方式。
此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。
Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。