1、git init命令把这个目录变成Git可以管理的仓库
2、把文件添加到仓库:git add 1.txt(没有消息就是添加成功)
git commit - m “hello” 告诉Git,把文件提交到仓库,-m后面输入的是本次提交的说明,输入方便从历史记录找到改动的记录
3、版本回退:
git status 查看仓库当前的状态,看文件有没有被修改或者有没有被提交的修改
git diff 查看上次是怎么修改的1.txt,查看修改内容
git log 查看修改的文件版本的历史记录(输出信息比较多)
git log –pretty=online (减少输出信息)
git reset -hard回退版本
Head指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
4、版本修改(修改回退)
每次修改后都要git add添加到暂存区,最后git commit一次性提交
git checkout –1.txt 丢弃工作区的修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
5、要克隆仓库,必须知道仓库的地址,然后使用git clone命令进行克隆
6、创建分支 git checkout -b dev 创建dev分支,并切换到dev分支,相当于以下两条命令:
git branch dev 创建dev分支
git checkout dev 切换到dev分支
git branch 查看当前分支(当前分支会标一个*号)
dev分支上的工作完成后,就切换到master分支上
把dev分支上的工作成果合并到master的分支 git merge dev
合并完成后删除分支git branch -d dev 删除dev分支
7、解决冲突:
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log –graph命令可以看到分支合并图。
git push把本地库的内容推送到远程
git push -u origin master把本地仓库分支master内容推送到元仓库去
8、多人协作
git remote 查看远程库的信息
git remote -v 查看远程库的详细信息
Git常用操作命令收集:
1) 远程仓库相关命令
检出仓库:
gitclonegit://github.com/jquery/jquery.git查看远程仓库:
g
i
t
c
l
o
n
e
g
i
t
:
/
/
g
i
t
h
u
b
.
c
o
m
/
j
q
u
e
r
y
/
j
q
u
e
r
y
.
g
i
t
查
看
远
程
仓
库
:
git remote -v
添加远程仓库:
gitremoteadd[name][url]删除远程仓库:
g
i
t
r
e
m
o
t
e
a
d
d
[
n
a
m
e
]
[
u
r
l
]
删
除
远
程
仓
库
:
git remote rm [name]
修改远程仓库:
gitremoteset−url–push[name][newUrl]拉取远程仓库:
g
i
t
r
e
m
o
t
e
s
e
t
−
u
r
l
–
p
u
s
h
[
n
a
m
e
]
[
n
e
w
U
r
l
]
拉
取
远
程
仓
库
:
git pull [remoteName] [localBranchName]
推送远程仓库:
gitpush[remoteName][localBranchName]2)分支(branch)操作相关命令查看本地分支:
g
i
t
p
u
s
h
[
r
e
m
o
t
e
N
a
m
e
]
[
l
o
c
a
l
B
r
a
n
c
h
N
a
m
e
]
2
)
分
支
(
b
r
a
n
c
h
)
操
作
相
关
命
令
查
看
本
地
分
支
:
git branch
查看远程分支:
gitbranch−r创建本地分支:
g
i
t
b
r
a
n
c
h
−
r
创
建
本
地
分
支
:
git branch [name] —-注意新分支创建后不会自动切换为当前分支
切换分支:
gitcheckout[name]创建新分支并立即切换到新分支:
g
i
t
c
h
e
c
k
o
u
t
[
n
a
m
e
]
创
建
新
分
支
并
立
即
切
换
到
新
分
支
:
git checkout -b [name]
删除分支:
gitbranch−d[name]—−−d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用−D选项合并分支:
g
i
t
b
r
a
n
c
h
−
d
[
n
a
m
e
]
—
−
−
d
选
项
只
能
删
除
已
经
参
与
了
合
并
的
分
支
,
对
于
未
有
合
并
的
分
支
是
无
法
删
除
的
。
如
果
想
强
制
删
除
一
个
分
支
,
可
以
使
用
−
D
选
项
合
并
分
支
:
git merge [name] —-将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):
gitpushorigin[name]删除远程分支:
g
i
t
p
u
s
h
o
r
i
g
i
n
[
n
a
m
e
]
删
除
远
程
分
支
:
git push origin :heads/[name]
我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是’Everything up-to-date’,发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
gitpushorigintest:master//提交本地test分支作为远程的master分支//好像只写这一句,远程的github就会自动创建一个test分支 g i t p u s h o r i g i n t e s t : m a s t e r / / 提 交 本 地 t e s t 分 支 作 为 远 程 的 m a s t e r 分 支 / / 好 像 只 写 这 一 句 , 远 程 的 g i t h u b 就 会 自 动 创 建 一 个 t e s t 分 支 git push origin test:test // 提交本地test分支作为远程的test分支
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
gitpushorigin:test//刚提交到远程的test将被删除,但是本地还会保存的,不用担心3)版本(tag)操作相关命令查看版本:
g
i
t
p
u
s
h
o
r
i
g
i
n
:
t
e
s
t
/
/
刚
提
交
到
远
程
的
t
e
s
t
将
被
删
除
,
但
是
本
地
还
会
保
存
的
,
不
用
担
心
3
)
版
本
(
t
a
g
)
操
作
相
关
命
令
查
看
版
本
:
git tag
创建版本:
gittag[name]删除版本:
g
i
t
t
a
g
[
n
a
m
e
]
删
除
版
本
:
git tag -d [name]
查看远程版本:
gittag−r创建远程版本(本地版本push到远程):
g
i
t
t
a
g
−
r
创
建
远
程
版
本
(
本
地
版
本
p
u
s
h
到
远
程
)
:
git push origin [name]
删除远程版本:
gitpushorigin:refs/tags/[name]4)子模块(submodule)相关操作命令添加子模块:
g
i
t
p
u
s
h
o
r
i
g
i
n
:
r
e
f
s
/
t
a
g
s
/
[
n
a
m
e
]
4
)
子
模
块
(
s
u
b
m
o
d
u
l
e
)
相
关
操
作
命
令
添
加
子
模
块
:
git submodule add [url] [path]
如:
gitsubmoduleaddgit://github.com/soberh/ui−libs.gitsrc/main/webapp/ui−libs初始化子模块:
g
i
t
s
u
b
m
o
d
u
l
e
a
d
d
g
i
t
:
/
/
g
i
t
h
u
b
.
c
o
m
/
s
o
b
e
r
h
/
u
i
−
l
i
b
s
.
g
i
t
s
r
c
/
m
a
i
n
/
w
e
b
a
p
p
/
u
i
−
l
i
b
s
初
始
化
子
模
块
:
git submodule init —-只在首次检出仓库时运行一次就行
更新子模块:
gitsubmoduleupdate—−每次更新或切换分支后都需要运行一下删除子模块:(分4步走哦)1)
g
i
t
s
u
b
m
o
d
u
l
e
u
p
d
a
t
e
—
−
每
次
更
新
或
切
换
分
支
后
都
需
要
运
行
一
下
删
除
子
模
块
:
(
分
4
步
走
哦
)
1
)
git rm –cached [path]
2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
3) 编辑“.git/config”文件,将子模块的相关配置节点删除掉
4) 手动删除子模块残留的目录
5)忽略一些文件、文件夹不提交
在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
target
bin
*.db
git操作-删除文件
git删除文件
rm add2.txt
git rm add2.txt
git commit -m “rm test”
git push web
问题:warning: LF will be replaced by CRLF in ……
The file will have its original line endings in your working directory.
原因:原因是路径中存在 / 的符号转义问题,false就是不转换符号默认是true,相当于把路径的 / 符号进行转义,这样添加的时候就有问题
解决方法:git config –global core.autocrlf false