Sou desenvolvedor .NET e já usei o TFS (Team Foundation Server) como meu software de controle de origem várias vezes. Os bons recursos do TFS são:
- Boa integração com o Visual Studio (então eu faço quase tudo visualmente; sem comandos do console)
- Fácil check-out, processo de check-in
- Fácil fusão e resolução de conflitos
- Construções automatizadas fáceis
- Ramificação
Agora, quero usar o Git como backbone, repositório e controle de fonte dos meus projetos de código aberto. Meus projetos estão em linguagem C #, JavaScript ou PHP com bancos de dados MySQL ou SQL Server como mecanismo de armazenamento.
Acabei de usar a ajuda do github.com para esse fim e criei um perfil lá e baixei uma GUI para o Git. Até essa parte foi tão fácil.
Mas eu estou quase preso em seguir adiante. Eu só quero fazer algumas operações simples (realmente simples), incluindo:
- Criando um projeto no Git e mapeando-o para uma pasta no meu laptop
- Fazendo check-out / check-in de arquivos e pastas
- Resolvendo conflitos
É tudo o que preciso fazer agora. Mas parece que a GUI não é tão amigável. Espero que a GUI tenha um Connect To...
ou algo parecido e, em seguida, espero que uma lista de projetos seja exibida e, quando eu escolher um, espero ver a lista de arquivos e pastas desse projeto, assim como explorar seu projeto TFS no Visual Studio. Então, eu quero poder clicar com o botão direito do mouse em um arquivo e selecionar check-in...
ou check-out
algo assim.
Eu espero muito? O que devo fazer para usar o Git facilmente como o TFS? O que estou perdendo aqui?
fonte
Respostas:
As vantagens que o git surgiu ao descartar muitas suposições antigas sobre o que um VCS deve fazer. As desvantagens do git vieram de não poder aproveitar a experiência anterior e não poder fazer as coisas da maneira que você está acostumado.
Se você vai mudar de outra coisa para o git, tente iniciar tabula-rasa (embora seja impossível fazer isso na prática). Avalie-o com base no que faz e quão bem faz, não em como faz, em comparação com o modo como você está acostumado a fazê-lo. Não é que você espere demais, é que suas expectativas são ortogonais ao que o git fornece. Se você é casado com a operação da GUI, ficará desapontado. O Git tem ferramentas de GUI disponíveis, mas elas não adicionam muito. Isso não é um fracasso em fornecê-los, pois não há muito que uma GUI possa adicionar. O GitK ajuda, não nas operações do dia-a-dia, mas na visualização da estrutura da filial e no exame ou pesquisa no histórico.
Aqui está uma analogia pateta do que quero dizer com "ortogonal". Uma das coisas que você pode fazer com um jornal é embrulhar peixe nele ou usá-lo para alinhar uma gaiola. Mas esses não são essenciais para a função de um jornal, são recursos incidentais da forma em que ele se encontra. Esperando que o git "faça check-in de arquivos" ou "permita que você selecione projetos" ou forneça um "conecte-se a ... "é como esperar poder embrulhar peixes ou alinhar sua gaiola com o site de um jornal .
fonte
Você já considerou mercurial? Como o git, é um DCVS e permite fazer todas as coisas legais que se pode fazer com um DCVS. Como o git, existe um bom provedor de serviços baseado em nuvem (bitbucket). Mas, ao contrário do git, a história do Windows é bastante decente, você não é um cidadão de segunda classe. Você tem boas opções de ferramentas (TortiseHG) e uma integração decente do Visual Studio (VisualHG).
Porém, nada será como o TFS no visual studio - o mundo simplesmente não está conectado dessa maneira.
fonte
svn
e perdi muitas coisas que eram tão fáceishg
. Agora estou indo paragit
e tenho sentimentos confusos. Adoro recuperar muitas dessas instalações que perdisvn
, mas ainda sinto falta da simplicidade emhg
comparação com a complexidade desnecessáriagit
. Mesmo a instalação do TortoiseGit no Windows exige que você pule através de bastidores que simplesmente não são necessários com o TortoiseHg .Mudei de SVN para git há um ano e estou muito feliz com isso. No entanto, não confio em nenhuma GUI e, caso você recuse rigidamente a linha de comando, pode ser um problema.
Parece que você espera
git
funcionar da maneira que está acostumado, mas não funciona. Não é difícil, mas você deve dar uma olhada em seus princípios antes de prosseguir.O Git é distribuído, o que significa que você sempre trabalha com seu repositório local, que pode ser mapeado para qualquer número de controles remotos, incluindo zero. Ao brincar com o projeto de outras pessoas, estou usando dois controles remotos: o repositório git ou SVN e o meu próprio servidor.
Eu sempre começo criando um diretório vazio e depois ou
git init
ougit clone SOME-REMOTE-REPOSITORY
. Este link pode ajudá-lo.Você perdeu para escrever qual GUI você está usando. Ambos
TortoiseGit
egit-gui
certamente podem fazê-lo.Para isso eu estou usando
git-gui
ou meu editor de texto favorito.Conecte-se ao que, quando houver 0 a N controles remotos? O Git não fica conectado a um servidor remoto, ele cria a conexão apenas temporariamente e apenas para os poucos comandos que trabalham com o repositório remoto. A maior parte do trabalho é realizada localmente.
Estou assumindo que
projects
você quer dizerrepositories
.Receio que não exista isso. O Git em um servidor remoto funciona estritamente com apenas um repositório. Listar todos os repositórios é equivalente a listar todos os diretórios que contêm o subdiretório
.git
. Tenho certeza de que há algo assimGitHub
.Mais uma vez, receio que não exista, pois
git
funciona localmente. E, novamente, não seria de muita utilidade. Simplesmente clone o repositório e explore-o no seu computador. Embora a clonagem de grandes repositórios leve algum tempo, todas as operações subseqüentes são muito mais rápidas e você pode observar qualquer confirmação ou ramificação.Mais uma vez,
git
funciona localmente. Portanto, não faz sentido fazer check-in ou check-out em um repositório remoto. Trabalhar dessa maneira é uma perda de tempo, mesmo em uma LAN rápida. Leve o repositório para o seu computador, trabalhe com ele egit push
as alterações no controle remoto. Pense nisso como publicar suas alterações e também fazer backup. Você deve confirmar localmente com muita frequência .Antes de iniciar o trabalho,
git fetch
ougit pull
as alterações do controle remoto, caso outra pessoa esteja trabalhando com ele.Sim e não. Você espera algo diferente do que ele oferece. Você pode obter algo muito melhor,
git
é poderoso, flexível, seguro, rápido como o inferno e pode fazer tudo o que precisa, mas não pode imitar exatamente o que um VCS centralizado faz.fonte
Eu fiz o journy da fonte visual seguro para tfs para svn para git.
Passar de vss para tfs foi uma experiência agradável. Passar de tfs para svn foi uma experiência agradável. Passar de svn para git tem sido uma espécie de batalha interna.
Muitas vezes, me considero bastante conservador e tento me apegar ao que funciona. Uma boa interface gráfica é para mim preferível à linha de comando e eu me encontrei procurando por uma interface gráfica que me permitisse brincar com as crianças legais com quem trabalho. Todos eles usavam o git exclusivamente com a linha de comando.
O momento eureka para mim veio quando desisti da busca por um gui de bala de prata e comecei a tentar o git bash (ainda estou aprendendo).
Eu tenho alguns guis instalados e eles complementam o git na linha de comando. Extensões Git, provedor de controle de fonte Git para visual studio e tartaruga git. Mas eu digo: familiarize-se com o git bash. Os comandos podem ser um pouco enigmáticos, mas uma vez que você os aprende, eles são muito mais rápidos que o gui.
Ramificar com o git é simplesmente INCRÍVEL comparado aos outros. Crie ramificações e alterne entre ramificações quase instantaneamente. Você pode fazer coisas que você não se incomodaria em fazer com o svn porque o svn basicamente copia sua cópia de trabalho (pelo menos da maneira que eu fiz).
Acho que o Git tem uma curva de aprendizado mais íngreme que o svn. Mas uma vez que você "entende" com o git, você não quer voltar.
Git todo o caminho.
fonte
Você está acostumado a ter um servidor que armazena seus arquivos e é o proprietário onipotente deles. Para editar um arquivo, você deve pedir permissão ao servidor.
Git não é assim. Pense no git desta maneira: você tem seu repositório local. O Git permite confirmar alterações, confirmações reversas, ramificação fácil e rápida etc. Quando você deseja fazer backup do seu histórico de controle de origem, envia as alterações para outra repositório, que "só acontece de ser" um servidor, como GitHub.com.
Fluxo de trabalho:
Isso é tudo.
fonte
O que você quer dizer com "o" git gui? Há um zilhão deles, incluindo um plugin para integração do visual studio, se bem me lembro. Se uma GUI não funcionar para você, tente um pouco mais até encontrar uma que funcione. Eu pessoalmente uso GUIs diferentes para tarefas diferentes (e a CLI para outros).
No entanto, o git é mais uma estrutura de controle de versão do que um sistema fixo. Você ainda precisará aprender alguns conceitos básicos para aproveitar ao máximo.
fonte
sim
Nada. O Git é centrado na CLI e não possui um bom front-end (eu sei sobre o TortoiseGit, que não é resposta, em comparação com outros Tortoise *). Você pode tentar usar o SmartGit (cuidado com o Java)
fonte