git小白整理

来源:互联网 发布:电压力锅 知乎 编辑:程序博客网 时间:2024/05/18 01:36

本人刚接触git,根据一些视频和百度的查到的一些关于git与项目结合的资料,也遇到了一些坑,为了防止今后万一长时间不接触而遗忘,特写此博客,方便今后某天回头来温习。

注意:纯新手手记,文章后面并对一些个人觉得有用的博客进行了转载,只为了今后遗忘某些东西的时候,方便阅读和学习,有很多不足之处,还望见谅。

环境:windows10 系统


git使用前准备(git安装与SSH配置)

下载git 官网https://git-scm.com/,windows系统会附带下载git-bash应用程序文件


若是在IDEA上使用,需将terminal终端整合成git-bash,这样会更加方便操作,以下图片为配置所在地:





点击git-bash,输入以下命令

$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"
在安装git时,已设置了git的配置,上处是修改git用户名和邮箱的命令。

在码云或者github上创建自己的项目,并配置私人公钥

创建SSH Key 的命令行为

$ ssh-keygen -t rsa -C "username"


用户名要跟之前设置的gitconfig中的用户名一致。

进入相应目录查看公钥文件id_rsa.pub,windows中的地址:C:\Users\LENOVO\.ssh。

用记事本打开,将公钥复制。然后粘贴到码云或者github中配置私人公钥处,从而生成私人公钥,由于私人公钥权限相比项目公钥权限大,所以生成私人公钥。


创立自己所需要的目录结构,其中.gitignore是git中一个必要的文件,远程仓库将不会追踪.gitignore文件中所声明的文件,既不会将.gitignore中所提及的文件和目录提交到远程仓库,根据个人需求进行设置

忽略文件原则

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

语法规范(熟悉正则很容易理解)

  • 空行或是以#开头的行即注释行将被忽略;
  • 以斜杠 “/” 结尾表示目录;
  • 以星号 “*” 通配多个字符;
  • 以问号 “?” 通配单个字符;
  • 以方括号 “[]” 包含单个字符的匹配列表;
  • 以叹号 “!” 表示不忽略(跟踪)匹配到的文件或目录;
  • 可以在前面添加斜杠 “/” 来避免递归.

git常用操作步骤

首先我们可以将创建的项目克隆到本地,进入自己想要放置项目的文件夹,命令行如下:

git clone git@github.com:git_username/repository_name.git


初始化git

git init (输入此命令,本地将生成.git文件)


输入 git status  可以看出项目中有哪些文件发生了变化,这些变更文件等待验证追踪


将变化了的文件进行追踪,输入命令为:

git add .(注意add后面含空格)意思为添加所有变更文件,将这些文件都进行追踪


再将追踪验证后的文件进行提交,提交到本地仓库,输入的命令行为:

git commit -am '注释内容'  (加 am 意思后面直接加注释)


将本地仓库与远程仓库进行关联,命令为:

git remote add origin git@github.com:git_username/repository_name.git


将本地的推送到远程仓库上,命令为

git push  -u origin master



若出现以上情况,需先执行:git pull   将分支上的文件拉取下来,一般第一次git项目都需要先pull下来代码


然后再执行 git push -u origin master



若出现以上情况,则是我们创建的分支没远程分支新,需进行强制推送

git push -u -f  origin master


由于项目刚创立,里面什么都没有,需要将master进行覆盖。


创立分支

git checkout -b 分支名   origin/ master(checkout 是检出,-b 创建分支, origin/master意思是在master基础上生成一个分支)


推送分支

git push HEAD origin -u


git中本地与远程仓库的关联与取消

1.在本地目录下关联远程repository :

Git remote add origin git@github.com:git_username/repository_name.git(即码云或github上创建项目后生成的SSH 复制链接)


2.取消本地目录下关联的远程库:

git remote remove origin


接下来是一些他人原文的引荐(此处粘贴是为了方便学习,并附带原文地址):

 

windows使用git时出现:warning: LF will be replaced by CRLF



windows中的换行符为 CRLF, 而在Linux下的换行符为LF,因为Git的换行符检查功能,所以在执行add . 时出现提示,解决办法:

core.safecrlf


git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符。这个功能的选项如下:

  • false - 不做任何检查
  • warn - 在提交时检查并警告
  • true - 在提交时检查,如果发现混用则拒绝提交

建议使用最严格的 true 选项。

core.autocrlf

假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:

$ git config --global core.autocrlf true

linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:

$ git config --global core.autocrlf input

这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。

如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:

$ git config --global core.autocrlf false
原文:http://blog.csdn.net/feng88724/article/details/11600375


一些git分支操作

1、创建本地分支 local_branch

     Git branch local_branch


2、创建本地分支local_branch 并切换到local_branch分支

   git checkout -b local_branch


3、切换到分支local_branch

    git checkout local_branch


4、推送本地分支local_branch到远程分支 remote_branch并建立关联关系

      a.远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch

          git push

     b.远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch

         git push -u origin/remote_branch

     c.远程没有有remote_branch分支并,本地已经切换到local_branch

        git push origin local_branch:remote_branch

5、删除本地分支local_branch

      git branch -d local_branch

6、删除远程分支remote_branch

     git push origin  :remote_branch

     git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。

   git branch -d | -D branchname 删除branchname分支

   git branch -d -r branchname 删除远程branchname分支


7、查看本地分支

      git branch


8、查看远程和本地分支

      git branch -a

原文为:http://blog.csdn.net/hijiankang/article/details/47254179


Git push与git pull是一对推送/拉取分支的git命令。


git push 使用本地的对应分支来更新对应的远程分支。

$ git push <远程主机名> <本地分支名>:<远程分支名>
  • 1
  • 1

注意: 命令中的本地分支是指将要被推送到远端的分支,而远程分支是指推送的目标分支,即将本地分支合并到远程分支。 
如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

$ git push origin master
  • 1
  • 1

上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。 
origin是一个远程厂库地址。

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,这条命令是删除远程master分支。

$ git push origin :master# 等同于$ git push origin --delete master
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

上面命令表示删除origin主机的master分支。

如果当前分支与远程分支之间存在追踪关系(即分支名相同),则本地分支和远程分支都可以省略。

$ git push origin
  • 1
  • 1

上面命令表示,将当前分支推送到origin主机的对应分支。

如果当前分支只有一个追踪分支,那么主机名都可以省略。

$ git push
  • 1
  • 1

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

$ git push -u origin master
  • 1
  • 1

上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

$ git config --global push.default matching# 或者$ git config --global push.default simple
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项。

$ git push --all origin
  • 1
  • 1

上面命令表示,将所有本地分支都推送到origin主机。

如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。

$ git push --force origin
  • 1
  • 1

上面命令使用–force选项,结果导致在远程主机产生一个”非直进式”的合并(non-fast-forward merge)。除非你很确定要这样做,否则应该尽量避免使用–force选项。

最后,git push不会推送标签(tag),除非使用–tags选项。

$ git push origin --tags
  • 1
  • 1

git pull 获取并合并其他的厂库,或者本地的其他分支。

git pull 与 git push操作的目的相同,但是操作的目标相反。命令格式如下:

git pull <远程主机> <远程分支>:<本地分支>
  • 1
  • 1

例如:

git pull origin master:my_test
  • 1
  • 1

上面的命令是将origin厂库的master分支拉取并合并到本地的my_test分支上。

如果省略本地分支,则将自动合并到当前所在分支上。如下:

git pull origin master
  • 1
  • 1

注:如果你想参与github上的一些优秀的项目,则下面提供一个通用的例子: 
首先,需要一个github的账号,并fork一个你感兴趣的repository。 
下面描述过程中会涉及两个远程主分支,为了很好的区别,我们把fork出来的主分支称为远程A repository,本fork的分支称为远程B repository

$git clone <远程Arepository> #克隆你fork出来的分支$git remote add <远程Brepository标签> git@github.com:XXXX/ceph.git #添加远程Brepository标签$git pull <远程B厂库标签> master:master  #从远程Brepository的master分支拉取最新objects合并到本地master分支$git checkout YYYY #切换到要修改的分支上$git branch develop; git checkout develop #在当前分支的基础上创建一个开发分支,并切换到该分支上,你将在该分支上codingcoding...... #在工作区coding$git add .#将修改保存到索引区$git commit -a #将修改提交到本地分区$git push origin my_test:my_test #将本地分支my_test提交到远程A repository的my_test分支上
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

然后在github web界面上将my_test分支合并到你需改的远程B repository 分支上。等待管理员review,如果有问题,就继续在develop分支当修改,并commit –amend,在之前的commit上修改。知道被meger。

原文:http://blog.csdn.net/litianze99/article/details/52452521



原创粉丝点击